Как определить, есть ли полезный удаленный код в системе контроля версий?

9

Итак, я перечитывал этот вопрос. Нужно ли удалять код без ссылок?

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

Как вы организуете этот удаленный код так, чтобы более поздняя версия вас (или другого программиста) могла найти его позже? Вы делаете отдельную ветку или помечаете ее как-то в системе контроля версий?

Раньше я никогда не воскрешал удаленный код из системы контроля версий, я просто использовал его для отслеживания изменений в коде, который все еще работает. Я ссылался на ветки раньше, когда в них содержалась чья-то экспериментальная работа, так что, может быть, это хороший способ пометить интересные разделы кода, которые удаляются в стволе?

Питер Смит
источник
какие vcs вы спрашиваете avout? звучит как svn
gnat
SVN - это то, что я имею в виду, но я думаю, что он может быть применен к любому источнику управления?
Питер Смит
Вы говорите: «Что я имею в виду, это отмененные или отложенные проекты» в ответ на ответ. Я думаю, что вы должны отредактировать свой вопрос, потому что он сильно отличается от "кода без ссылок".
Питер Б

Ответы:

6

Если вы не экспериментируете в ветке и еще не уверены, какое решение в конечном итоге будет реинтегрировано, вы обычно не ссылаетесь на удаленный код.

В очень редких случаях вы можете явно искать удаленный код, который вы смутно помните, решая проблему, которая у вас есть прямо сейчас . Но более типичная причина, по которой вы видите удаленный код, - это когда вы просматриваете отставание, чтобы понять что-то о текущем коде или поведении приложения относительно его исторического кода или поведения.

В частности, вы могли бы быть ...

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

... так далее.

И в этих случаях вы обычно не воскрешаете старый код. Вы просто понимаете то, что видите сейчас, используя удаленный код для контекста или руководства.

svidgen
источник
4

Я думаю, ответ таков: подавляющему большинству программистов не важно ссылаться на удаленный код. По нескольким причинам. Некоторые причины, которые приходят мне в голову:

  • Наверное, самое главное, чистая лень ...

  • Большинство никогда не чувствовало необходимости воскрешать некоторый код, поэтому у них нет опыта, который мотивировал бы их на то, чтобы упростить воскрешение кода.

  • Большая часть кода, который был удален, удаляется по причине. Обычно он заменяется другим, лучшим, функционально эквивалентным или более мощным кодом. Зачем кому-то хотеть воскресить нижний код?

    Обратите внимание, что это также психологическая проблема: большинство программистов весьма гордятся результатами своей работы. Как это могло прийти в голову, что в том, что они заменили, была еще какая-то ценность?

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

Но, независимо от того, сколько более или менее веских причин вы можете объяснить этим пренебрежением мертвым кодом, я думаю, что на самом деле программисты просто не заботятся об этом. И даже если вы попытаетесь пометить удаленный материал тем или иным способом, будьте готовы к тому, что вас полностью проигнорируют ...

cmaster - восстановить монику
источник
Думаю, я попытаюсь ответить почему. Если это замененный код, это имеет смысл через короткий промежуток времени, удаленный код больше не нужен. То, что я имею в виду, это отмененные или отложенные проекты. Особенно те, в которых было разработано или изменено некоторое большое количество функциональных возможностей, но в конечном итоге они не полностью завершены и не используются в текущем производстве.
Питер Смит
1
@PeterSmith: Вы должны создать отдельные ветви для такого кода. Тогда нет необходимости удалять код, так как он все равно не существует в рабочей ветке.
JacquesB
В дополнение к тому, что сказал @JacquesB, если у вас есть код, который вообще не используется, он довольно быстро устареет. Возможно, вы сможете восстановить мертвую ветку через год, через пять лет вам придется перезапускать с нуля. Мертвая ветвь все еще может пригодиться в качестве источника идей, но сам код, скорее всего, больше не будет использоваться.
cmaster - восстановить монику
1

Этот вопрос, вероятно, возвращается к вопросу: «Как вы сохраняете отслеживаемость ваших проверок VCS в отношении базы данных ошибок и ваших системных требований?»

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

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

Если вы хотите отследить какой-нибудь интересный / экспериментальный код, который необходимо удалить перед выпуском, вы можете просто отследить его с помощью некоторых «баговых» заявок в духе «Удалить неиспользуемый код для ...» . Или, может быть, ввести новый тип билета в систему для функции прототипа .

Поэтому, чтобы прямо ответить на вопрос - не используйте ветки / теги в вашей системе VCS для отслеживания удаленного кода - используйте инструмент отслеживания изменений.

Бен Коттрелл
источник
0

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

«Экспериментальная работа» - это действительно другая проблема. У вас должна быть отдельная ветка для этого.

JacquesB
источник