Piotr Pasich has shared some thoughts on naming in his latest post to his site today. In it he talks about one of the "hardest things in computer science" (naming things) and makes some recommendations to help you make naming in your code more effective.
Precise names for classes is notoriously difficult. Done right, it makes code more self-documenting and provides a vocabulary for reasoning about code at a higher level of abstraction. There are a couple simple tips&tricks to make the names more readable: do not abbreviate, do not add any extra informations (underscore, type), avoid single letter prefixes, etc etc.
But what if you already know and use those rules and you still want to improve naming in your code? I assume that you care, you're not selfish and you think about elses when you write the code. You ask one of the most important question to yourself, during architecture implementation - how the fellow sitting next to will behave while reading the code.
He's broken up the remainder of the post into different sections, each with a high level recommendation and some follow up description:
- Ask somebody else
- Does it have a single responsibility you can name?
- Simple Superclass Name
- Qualified Subclass Name
- Adding 'Interface' word
He ends with a few names to avoid (like *Manager, *Helper or *Handler) to help prevent ambiguity. He reinforces providing meaning in your naming and making it easier for others to understand what's going on.