Дискуссия не глупая. Имя класса должно сказать вам, что делает класс. Как только вы добавите менеджер слов (и подобные слова), у класса больше не будет достаточно ограничений, чтобы сказать вам, что он делает. В моем примере «Менеджер» был названием, и в определенных контекстах он хорошо известен ...
шему опыту, какие "вонючие" ключевые слова в именах классов или функций могут быть признаками плохого объектно-ориентированного проектирования?
Я обнаружил, что классы, содержащие словоManager
или жеBase
часто подозревают. Например,FooManger
часто указывает на плохую инкапсуляцию или одноэлементный дизайн, который трудно использовать повторно.
A FooBase
Класс, как правило, является абстрактным базовым классом, на который никогда не ожидается прямой ссылки в коде вызывающего. Он используется только для обмена некоторыми реализациями кода безЭТО отношения. ИBase
имя класса раскрывает внутренние детали реализации и не отражает объект «реального мира» в модели предметной области.
Функции, которые включают словоAnd
или жеOr
(например.DoThisAndThat()
или жеDoThisOrThat()
вонючий Эта функция, вероятно, испытывает недостаток в сплоченности и пытается сделать слишком много. И имя раскрывает внутренние детали реализации.