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