Здравствуйте, m2user, Вы писали:
S>>И да, вопрос не в том, как образуется "мертвый код". Конкретно в данной ветке отметились персонажи, которые вообще не понимают что такое "мертвый код". Как раз из-за якобы расплывчатого понятия "требуемая функциональность".
M>В моем понимании мертвый код, это код, ставший таковым вследствии изменения требований к продукту (удаление фичей и т.п.).
Это не есть хорошее определение, т.к. оно не описывает ситуаций с рефакторингом.
Например, пусть в приложении была функция, которая делала рекурсивный обход рабочего каталога и удаляла найденные tmp-файлы, оставшиеся от предыдущего запуска, назовем ее find_then_wipe_old_tmp_files. Со временем выяснилось, что она работает медленно, поэтому для эксперимента написали улучшенный вариант, find_then_wipe_old_tmp_files_fast, но старую функцию почему-то не удалили. В коде она есть, в работе программы участия не принимает, на требуемую от программы функциональность влияния не оказывает. Но при этом она является мертвым кодом.
M>- "код, который собирается, и возможно даже тестируется, но никто не знает, зачем оно там и что сломается, если его удалить. (sic!)"
А это не дефиниция вообще. Это другое (с), а именно -- как выясняется, что код мертвый. Ведь на функции find_then_wipe_old_tmp_files не написано, что она является мертвым кодом. Она лежит себе в какой-нибудь библиотеке util, для нее, возможно, какие-то актуальные тесты написаны. Мертвой она от этого быть не перестает, но для того, чтобы выяснить, что она мертвая, нужно провести некоторый анализ.