Рекомендации по удалению неиспользуемого кода

Я хотел бы знать, что лучше всего использовать для удаления неиспользуемого кода. Лично я поклонник удаления (а не просто комментирования) всего, что в настоящее время не используется. Но я не уверен, как далеко продвинуться.

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

  • Должен ли я удалить код, потому что мы его не используем в данный момент, и чем меньше кода, тем легче читать? Проблема в том, как будущие разработчики знают, что эта работа уже выполнена?
  • Или я должен хранить его там, так что другой разработчик может легко найти его, если им нужно будет использовать его позже (они не собираются переходить через контроль источника, чтобы убедиться, что кто-то это сделал и удалил)?
  • Или есть другой вариант?

То же самое относится к UserControls, которые в настоящее время не используются. Должен ли я удалить их или сохранить их?

Изменить: Разумеется, (или я думал, что это будет), мы используем исходный контроль.

Ответы

Ответ 1

Прежде всего помнить, что весь ваш код должен находиться в исходном управлении.

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

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

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

Ответ 2

Если вы используете систему управления версиями, удаление этого кода является моим предпочтительным вариантом.

Он не будет мешать работе с текущим кодом, и вы всегда будете иметь код в репозитории, если он вам понадобится.

Ответ 3

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

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

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

Ответ 4

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

Не то, чтобы я работал во многих местах с этой политикой "без кода" (только один), но я НИКОГДА не видел, чтобы кто-то возвращался в репозиторий и получал какой-то старый код.

Однако, за исключением небольших блоков, я никогда не видел, чтобы кто-то раскомментировал кому-то еще код!

Если вы хотите сохранить его, я оставил бы его полностью реализованным и протестированным (проверьте тесты!), но при условии, что это изменится, если новый код когда-либо понадобится.

У меня был ненужный код, просто "Включи", когда это было необходимо, это действительно приятное чувство (не то, что это всегда можно сделать).

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

Ответ 5

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

Ответ 6

Я также являюсь поклонником удаления неиспользуемого кода.

Если я знаю, что код может быть полезен позже, я создал ветку перед удалением кода из соединительной линии (мы используем subversion - поэтому создание ветвей очень дешево и легко). Это позволяет мне легко получить этот код один раз/если это необходимо.

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

Ответ 7

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

Ответ 8

Я собираюсь предложить заменить удаленный код комментарием, определяющим Рабочий элемент, по которому был удален код. Мое логическое обоснование заключается в том, что это "крючок", на который могут быть добавлены комментарии к обзору кода. Мы используем наборы изменений TFS для просмотра кода VS Professional. Если код удаляется на 100%, крюка нет.