Avoid too abstract names. Names should have real world meaning
Choose meaningful names.
Avoid words like abstract, base, generic, helper etc.
Use rules for naming.
We can set up policies and rules warning for certain words like base, abstract, helper, manager, object etc.
Finding names is the last thing we should do on our designs. Unless we have a clear business understanding, good names emerge at the end after defined behavior and protocol boundaries.
There are only two hard things in Computer Science: cache invalidation and naming things.