Вопрос

Как бы вы определили «нежелательный код»?


Редактировать:

ИМХО, любой член кода с 0 активными вызывающими членами (проверяется рекурсивно) является нежелательным кодом.(функции, методы, свойства, переменные являются членами)

Это было полезно?

Решение

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

Другие советы

Вот мое определение нежелательный код:

  • Код, который не выполняется, — это мертвый груз.(Если только это не [вредоносная] полезная нагрузка для вашего реального кода, но это уже другая история :-))
  • Код, повторяющийся несколько раз, увеличивает стоимость продукта.
  • Код, который не подлежит регрессионному тестированию, также увеличивает стоимость продукта.

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

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

Хорошо, немного подумав об этом, я пришел к следующим трем пунктам:

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

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

В Java я бы пометил метод или класс @Deprecated.

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

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

Обычно я говорю моему компилятору, чтобы он был настолько раздражающим, насколько это возможно, который выбирает 60% вещей, которые мне нужно изучить. Неиспользуемые функции, которым уже несколько месяцев (после проверки с помощью VCS), обычно удаляются, если их автор не сообщает мне, когда они будут фактически использоваться. Вещи пропущенных прототипов также сразу заподозрить.

Я думаю, что пытаться внедрить автоматизированную уборку дома - это все равно что пытаться создать USB-устройство, которое гарантирует, что вы «безопасно» играете Русская рулетка .

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

Кроме того, я обычно ХОЧУ код, я просто хочу, чтобы его автор немного реорганизовал его и сделал их стиль таким же, как и у остального проекта.

Еще один полезный инструмент - doxygen , который помогает (визуально) увидеть отношения в дереве исходного кода. Однако, если он настроен на то, чтобы не извлекать статические символы / объекты, он не будет очень тщательным.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top