Глянь мій новий курс по Git! Привіт! Глянь мій новий курс по Git! Привіт! Глянь мій новий курс по Git на GitByBit.com! Привіт! Хочеш класно освіжити Git? Глянь мій новий курс на GitByBit.com!

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

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

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

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

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

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

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

Лікування

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

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

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

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

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

Виграш

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

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