Теоретическая общность
Симптомы и признаки
Класс, метод, поле или параметр не используются.
Причины появления
Иногда код создаётся «про запас», чтобы поддерживать какой-то возможный будущий функционал, который в итоге так и не реализуется. В результате этот код становится труднее понимать и сопровождать.
Лечение
-
Для удаления незадействованных абстрактных классов используйте сворачивание иерархии.
-
Ненужное делегирование функциональности другому классу может быть удалено с помощью встраивания класса.
-
От неиспользуемых методов можно избавиться с помощью встраивания метода.
-
Методы с неиспользуемыми параметрами должны быть подвергнуты удалению параметров.
-
Неиспользуемые поля можно просто удалить.
Выигрыш
-
Уменьшение размера кода.
-
Упрощение поддержки.
Не стоит трогать, если...
-
В случаях, когда вы работаете над фреймворком, создание функциональности, не используемой самим фреймворком, вполне оправдано. Главное, чтобы она была полезна пользователям фреймворка.
-
Перед удалением элементов, стоит удостовериться, не используются ли они в юнит-тестах. Такое бывает, если в тестах необходим способ получения какой-то служебной информации класса или осуществления каких-то специальных тестовых действий.