Теоретична спільність
Також відомий як: Speculative Generality
Симптоми і ознаки
Клас, метод, поле або параметр не використовуються.
Причини появи
Іноді код створюється «про запас», щоби підтримувати якийсь можливий майбутній функціонал, який так і не реалізується. В результаті цей код стає важче розуміти і супроводжувати.
Лікування
- Для видалення незадіяних абстрактних класів використайте згортання ієрархії.
- Зайве делегування функціональності іншому класу може бути видалене за допомогою вбудовування класу.
- Від невживаних методів можна позбутися за допомогою вбудовування методу.
- Методи з невживаними параметрами потрібно передати видаленню параметрів.
- Зайві поля можна просто видалити.
Виграш
- Зменшення розміру коду.
- Спрощення підтримки.
Не варто чіпати, якщо...
- У випадках, коли ви працюєте над фреймворком, створення функціональності, що не буде використовуватись самим фреймворком, цілком виправдане. Головне, щоб вона була потрібна користувачам фреймворка.
- Перед видаленням елементів варто впевнитися, чи не використовуються вони в юніт-тестах. Таке буває, якщо тести потребують способу отримання якоїсь службової інформації класу або здійснення якихось спеціальних тестових дій.