In your experience, what are some "smelly" keywords in class or function names that might be warning signs of bad object-oriented design?
I've found that classes containing the word Manager
or Base
are often suspect. For example, a FooManger
often indicates poor encapsulation or a singleton design that is difficult to reuse.
A FooBase
class is typically an abstract base class that is never expected to be directly referenced in caller code. It's only used to share some code implementation without a true IS-A relationship. And the Base
class name exposes internal implementation details and does not reflect a "real world" object in a Domain Model.
Functions that include the word And
or Or
(e.g. DoThisAndThat()
or DoThisOrThat()
) are smelly. The function is probably lack cohesion and is trying to do too much. And the name exposes internal implementation details.