Введение
В компьютерном программировании недоступный код — это часть исходного кода программы, которая никогда не будет выполнена, поскольку не существует пути управления, ведущего к этому коду из остальной части программы. Недоступный код иногда также называют «мертвым кодом», хотя под «мертвым кодом» также могут подразумеваться фрагменты кода, которые выполняются, но не оказывают влияния на результат работы программы. Недоступный код обычно считается нежелательным по нескольким причинам:
Он бесполезно расходует память.
Он может приводить к неэффективному использованию кэша инструкций процессора.
Это также может снизить локальность данных.
Время и усилия могут быть затрачены на тестирование, поддержку и документирование кода, который никогда не используется.
Иногда автоматизированный тест — это единственное, что использует этот код. Однако недоступный код может иметь и вполне оправданное применение, например, предоставление библиотеки функций для вызова или перехода к ним вручную через отладчик, когда программа остановлена в точке останова. Это особенно полезно для изучения и форматированного вывода внутреннего состояния программы. Вполне может быть целесообразно включать такой код в распространяемый продукт, чтобы разработчик мог подключить отладчик к работающему экземпляру программы у клиента.
It can cause unnecessary use of the CPU's instruction cache
This can also decrease data locality
Time and effort may be spent testing, maintaining and documenting code which is never used
Sometimes an automated test is the only thing using the code. However, unreachable code can have some legitimate uses, like providing a library of functions for calling or jumping to manually via a debugger while the program is halted after a breakpoint. This is particularly useful for examining and pretty printing the internal state of the program. It may make sense to have such code in the shipped product, so that a developer can attach a debugger to a client's running instance.
Недоступность против профилирования
В некоторых случаях практичным подходом может быть сочетание простых критериев недостижимости и использование профилировщика для обработки более сложных случаев. Профилирование само по себе не может доказать недостижимость участка кода, но может служить хорошей эвристикой для выявления потенциально недостижимого кода. После обнаружения подозрительного участка кода для определения его фактической недостижимости можно использовать другие методы, такие как более мощный инструмент анализа кода или даже ручной анализ.