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