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.