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