В своем опыте, каковы некоторые «вонючие» ключевые слова в именах классов или функций, которые могут быть предупреждением о плохом объектно-ориентированном дизайне?Злые названия классов?
Я обнаружил, что классы, содержащие слово Manager
или Base
, часто являются подозреваемыми. Например, FooManger
часто указывает на плохое инкапсулирование или одноэлементный дизайн, который трудно повторно использовать.
A FooBase
класс обычно является абстрактным базовым классом, который, как ожидается, не будет напрямую привязан к коду вызывающего абонента. Он используется только для обмена некоторой реализацией кода без истинного отношения IS-A. И имя класса Base
раскрывает внутренние детали реализации и не отражает объект «реального мира» в модели домена.
Функции, которые включают в себя слово And
или Or
(например DoThisAndThat()
или DoThisOrThat()
) вонючий. Вероятно, функция не хватает сплоченности и пытается сделать слишком много. И имя раскрывает детали внутренней реализации.
Для базовых классов у вас есть проблема только с словом Base в названии или понятие абстрактных базовых классов в целом? Вы говорите, что «никогда не ожидали, что вы будете напрямую ссылаться на код вызывающего абонента», но его можно использовать, вызывая код так же, как используется интерфейс. – Davy8
-1. Я согласен с вами в вопросе наименования функций, но что, если у меня есть пользовательский элемент управления, который просто координирует взаимодействие между некоторыми дочерними элементами управления? Разве это не кандидат на имя класса, включая «менеджер»? И я сразу знаю, что такое класс, если его имя заканчивается «Базой». –
Чтобы быть справедливым, он сказал, что классы, содержащие «Менеджер» или «База», являются НЕЗАВИСИМЫМИ подозреваемыми, а не всегда. Я также считаю, что это верно на протяжении многих лет. – markh44