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

Большой класс

Также известен как: Large Class

Симптомы и признаки

Класс содержит множество полей/методов/строк кода.

Причины появления

Классы редко бывают большими изначально. Но со временем постепенно многие из них «раздуваются» в связи с развитием программы.

Как и в случае с длинными методами, чаще всего программисту ментально проще добавить фичу в существующий класс, чем создать новый класс для этой фичи.

Лечение

Когда класс реализует слишком обширный функционал, стоит подумать о его разделении:

  • Извлечение класса поможет, если часть поведения большого класса может быть выделена в свой собственный компонент.

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

  • Извлечение интерфейса поможет, если нужно иметь список операций и поведений, которые клиент сможет использовать.

  • В классах графического интерфейса часто можно найти данные и поведения, которые не относятся к непосредственной отрисовке интерфейса, а скорее отвечают за общую логику работы. Такие данные и поведения следует выделить в отдельный класс предметной области, который бы управлял работой графического интерфейса. При этом может оказаться необходимым хранить копии некоторых данных в двух местах и обеспечить их согласованность. Дублирование видимых данных предлагает путь, которым можно это осуществить.

Выигрыш

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

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