The creation of a good mental model is one of the key challenges in developing software. There are several tools people use to help with this:
Domain vocabularies, ontologies, languages
How we name things is important. Good names perform several functions:
They provide a vocabulary for discussing our domain.
They communicate intent.
They support subtle expectations about how the system works.
They support each other in a system of names.
It's hard to pick good names, but it's worth the effort. Ward Cunningham describes using a thesaurus to get just the right sense (seehttp://c2.com/cgi/wiki?SystemOfNames).
Some teams have coding standards and naming standards that affect how names are chosen. I generally ...