One of the tenets of good coding practice is to use names for classes, interfaces, variables and other identifiers that are descriptive. This is not always easy when dealing with abstract concepts, and of course, everyone has their own idea of what descriptive means.
I was thinking that it would be really useful to establish a dictionary (and perhaps a thesaurus) of recommended class, method, etc names. That way, we could perhaps promote some standardization and make life a little easier for all of us. I find, for example, that sometimes it can be hard to come up with a name for a class or interface that is both succinct and descriptive, and it would be great to have a resource to provide some possible names.
While many names are domain specific, there are many generic modifiers that are not. Trivial examples include "Collection", "Filter", etc. Other examples of recommended names I would include would be names based on the GoF patterns (e.g. "xxxxFacade" is a Facade for the class "xxxx"). More abstract examples include those based on "nouned verbs" (e.g. Java's "Comparable").
Has anyone set up a page/site with something like this? I guess it is a relatively small issue, but it would be nice to see more consistency in naming of classes, interfaces and methods out there. As a mini version, perhaps we could have a "10 commandments of naming" to encourage good naming practices (come to think of it, some parents could do with this too...).
Here is my proposal for the First Commandment of Class Naming:
Thou shalt not append the word "Object"* to a class or interface name.
* Or "Interface". Or "Class". Or "Snafucator"**.
** Except as a name for a methodless and completely undocumented interface.