2015-07-03 2 views
0

Предположим, у вас есть форма окна, позволяющая вводить ваше имя в текстовое поле, вы нажимаете кнопку и выдает сообщение с вашим именем. Теперь давайте предположим, что пользователь выходит вперед и хочет, чтобы другое текстовое поле печатало свою фамилию. Вы определяете, что для этой функции потребуются месяцы для разработки (я преувеличиваю цель, но, пожалуйста, придерживайтесь концепции).Дублирование кода в .NET

Следовательно, вы не хотите изменять существующую форму, потому что иначе вы не сможете освободить свой продукт до тех пор, пока новая функция не будет завершена. Мой подход к такому сценарию - сделать копию и вставку формы, реализовать изменения, протестировать их и при готовности старой формы заменить последней версией.

Этот подход имеет большую обратную сторону, что любые быстрые исправления к старой форме необходимо также воспроизвести в новой форме и, таким образом, привести к дублированию усилий. Кроме того, что я ненавижу копирование и вставку; это просто не кажется правильным.

Другим подходом было бы создать класс, который наследует исходную форму, и, следовательно, любое исправление ошибок в «старой» форме автоматически будет доступно для новой формы. Такой подход дает вам гибкость для разработки в этой «новой» форме, позволяя вам исправлять ошибки на старом.

Однако я не уверен, что это правильный подход. У вас есть альтернативный и лучший подход к этому сценарию?

+0

Когда-либо слышал об источниках управления, версиях, интеграции и т. Д.? – wonderbell

ответ

1

Похоже, что вы хотите подсистему управления версиями. Посмотрите на Git, SVN или другие. Это позволяет вам работать с несколькими «версиями» программы сразу, вносить изменения, объединять эти изменения и т. Д.

Как уже упоминалось в комментариях, документ Git, описывающий использование ветвей possible workflows, может начать вас. Для Черепахи/Mercurial, this SO question может ответить на ваш вопрос.

+0

Нет, я использую мерцательный контроль над версиями. Не ошибка. Мне нужен подход, который позволяет вам изменить исходную форму (для исправлений ошибок), позволяя вам работать с новой функцией той же формы БЕЗ удаления кода и в тандеме. Я уверен, что у вас у всех был сценарий такого типа, когда вы были в этом бизнесе :)) – deadCrow

+0

Что @CodeCaster сказал: если вы уже используете контроль версий, то вы не используете его в полном объеме; Фактически, тогда вы не используете его для своей основной цели. Посмотрите на ветвление; это инструмент для обработки вашего предлагаемого случая. – MicroVirus

+0

Звучит интересная концепция. Интересно, есть ли у Tortoise/Mercurial «Feature branch». У этого есть ветви, но он делает/обрабатывает все автоматически для Вас. Я никогда не видел вариант «создать ветвь функции» в Tortoise, но я видел эти ветки и затем слияние кода с разными разработчиками. Ваше предложение может быть очень хорошей альтернативой существующей «лоскутной» методологии, которую мы имеем! – deadCrow

Смежные вопросы