Autumn SALE

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

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

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

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

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

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

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

Лечение

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

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

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

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

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

Выигрыш

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

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