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