Многие люди говорят такие вещи, как «класс никогда не должен быть больше вашей головы».
Тем не менее, я только что принял участие в дискуссии с некоторыми действительно замечательными программистами мирового уровня на эту тему. Я поговорил об этом с одним из ребят из Naked Objects. Насколько мы можем судить, иногда это случается, и не так много способов обойти это.
Однако обычно один класс, с которым это происходит, - это объект домена, который представляет фундаментальный элемент вашего домена - учетную запись для банковского обслуживания, продажу для розничной торговли и т. Д. Если вы обнаружите, что это происходит и с другими классами, вы, вероятно, хочу рассмотреть ответственность этого класса. Вот мои советы:
- Если он называется «Менеджер», «Помощник» или «Сервис», скорее всего, он слишком велик. Как только вы на самом деле поймете, какой должна быть ответственность класса, вам будет легче делегировать другие обязанности.
- Если он называется «Контроллер», он должен отвечать за контроль взаимодействия между кучей других классов ... и ничего больше.
- Если он передает данные и сообщения между различными физическими узлами, то либо он должен иметь дело с преобразованием конкретного сообщения в сериализованную форму, либо он обрабатывает механизм передачи. Например, у вас может быть один класс, который преобразует банковскую транзакцию в XML, и другой класс, который отправляет этот XML через HTTP.
- Если он передает события между различными модулями в приложении, он должен отвечать за оповещение слушателей, когда происходит событие, и больше ничего.
Как правило, если он слишком большой, посмотрите, можете ли вы делегировать какие-либо обязанности другому классу, а если нет, то, вероятно, все в порядке.