Мёртвый код
Код, который никогда не выполняется во время работы программы: недостижимый код, неиспользуемые функции, код за всегда-ложными условиями.
Определение
Мёртвый код принимает несколько форм: недостижимый код (после return/throw), неиспользуемые функции/классы, код за feature flags, которые никогда не включались, зомби-код (закомментированные блоки "на всякий случай"). Он накапливается при удалении фич, рефакторинге и смене разработчиков. Инструменты статического анализа, tree-shaking (webpack, rollup) и предупреждения IDE обнаруживают мёртвый код.
Почему это важно
Мёртвый код увеличивает когнитивную нагрузку, размер бандлов и бремя поддержки. Разработчики тратят время на чтение и поддержку кода, который никогда не выполняется. Он также может скрывать уязвимости безопасности или давать ложную уверенность в покрытии тестами.
Пример
Функция sendLegacyEmail() была заменена на sendEmail() 2 года назад, но никогда не удалена. Она никогда не вызывается, но разработчики всё ещё читают её при поиске логики email. Статический анализ отмечает её как неиспользуемую.