Видалення недоступного коду
У принциповій статичній мові ви завжди повинні знати, чи дійсно код доступний чи ні: видаліть його, компілюйте, якщо немає помилки, він не був доступний.
На жаль, не всі мови введені статично, і не всі статично типізовані мови є принциповими. Те, що може піти не так, включає: 1) роздуми та (2) безпринципне перевантаження.
Якщо ви використовуєте динамічну мову або мову з достатньо потужним відображенням, щоб фрагмент коду під контролем міг бути доступний під час виконання за допомогою відображення, ви не можете покластися на компілятор. До таких мов належать Python, Ruby або Java.
Якщо ви використовуєте мову з безпринципною перевантаженням, то просто видалення перевантаження може просто переключити роздільну здатність перевантаження на іншу перевантаження безшумно. Деякі такі мови дозволяють запрограмувати попередження / помилку під час компіляції, пов’язані з використанням коду, інакше ви не можете покластися на компілятор. До таких мов належать Java (використання @Deprecated
) або C ++ (використання [[deprecated]]
або = delete
).
Тож, якщо вам не пощастить працювати зі строгими мовами (на розум приходить іронія), ви, справді, можете стріляти собі в ногу, довіряючи компілятору. І, на жаль, тестові набори, як правило, неповні, тому не набагато більше допомоги.
Перегляньте наступний розділ ...
Видалення потенційно невикористаного коду
Швидше за все, на код посилається насправді, проте ви підозрюєте, що на практиці гілки коду, на які він посилається, ніколи не приймаються.
У цьому випадку, незалежно від мови, код може бути доступним, і можна використовувати лише інструменти, що працюють під час виконання.
Раніше я успішно використовував 3-фазний підхід до видалення такого коду:
- На кожній гілці, яку підозрюють, що її НЕ брати, запишіть попередження.
- Після одного циклу киньте виняток / поверніть помилку при введенні конкретного фрагмента коду.
- Після іншого циклу видаліть код.
Що таке цикл? Це цикл використання коду. Наприклад, для фінансової заявки я б очікував короткий місячний цикл (зарплата виплачується в кінці місяця) та тривалий річний цикл. У цьому випадку вам доведеться почекати щонайменше рік, щоб переконатися, що жодне попередження не надходить, щоб інвентар на кінець року не міг використовувати кодові шляхи, які в іншому випадку ніколи не використовуються.
Сподіваємось, більшість застосувань мають коротший цикл.
Я раджу розмістити коментар TODO із датою та порадою, коли перейти до наступного кроку. І нагадування у вашому календарі.