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