Недавно я прочитал интересный комментарий к OOP question, в котором один пользователь возражал против создания класса "Менеджер":
Удалите текстовый менеджер из вашего словаря при разговоре о именах классов. Имя класс должен описывать его " цель. Менеджер - это еще одно слово для сброса грунта. Любые функциональность подойдет там. Слово была причиной многих чрезвычайно плохие проекты
Этот комментарий воплощает мою борьбу за то, чтобы стать хорошим объектно-ориентированным разработчиком. Я давно занимаюсь процедурным кодом в организации с процедурными кодерами. Похоже, что основной стратегией относительно небольшого кода OO, который мы производим, является разбиение проблемы на классы, которые легко идентифицируются как дискретные единицы, а затем помещают левые над/обобщенные биты в класс "Менеджер".
Как я могу нарушить свои процедурные привычки (например, класс Manager)? Большинство статей/книг OO и т.д. Используют примеры проблем, которые по своей сути легко трансформируются в группы объектов (например, Vehicle → Car) и, таким образом, не дают большого руководства для разрушения более сложных систем.