Autumn SALE

Занадто великий клас

Також відомий як: Large Class

Симптоми і ознаки

В класі безліч полів/методів/рядків коду.

Причини появи

Як правило, спочатку класи не бувають занадто великими. Але з часом у зв’язку з розвитком програми багато хто з них «роздувається».

Як і у випадку з довгими методами, найчастіше програмістові ментально простіше додати фічу в існуючий клас, ніж створювати новий клас для цієї фічі.

Лікування

Коли клас реалізує занадто об’ємний функціонал, варто подумати про його розділення:

  • Відокремлення класу допоможе, якщо частина поведінки великого класу може бути виділена в свій власний компонент.

  • Відокремлення підкласу допоможе, якщо частина поведінки великого класу може мати альтернативні реалізації або використовується лише в окремих випадках.

  • Відокремлення інтерфейсу допоможе, якщо вам потрібно мати список операцій і поведінки, яку клієнт зможе використовувати.

  • В класах графічного інтерфейсу часто можна знайти дані і поведінки, які не відносяться до безпосереднього виводу інтерфейсу, а скоріше відповідають за його загальну логіку роботи. Такі дані і поведінки слід виділити в окремий клас предметної області, який би керував роботою графічного інтерфейсу. Також при цьому може виявитися необхідність зберігати копії деяких даних в двох місцях і забезпечувати їх узгодженість. Дублювання видимих даних пропонує шлях, яким можна це здійснити.

Виграш

  • Рефакторинг таких класів позбавить розробників від необхідності запам’ятовувати надмірну кількість атрибутів класу.

  • У багатьох випадках розділення великих класів на частини дозволяє уникнути дублювання коду і функціональності.