One of the hardest tasks in software is finding a good name. Names for variables, classes, libraries, and products requires countless mental cycles - as it should. Names are a serious business. In software, names bring imaginary things to life. Good names lead to readability, shared vocabularies, and emotional attachments. Bad names lead to confusion, pain, and assistance from highly paid consultants.
Have you ever wondered how many hours the software world has spent inventing naming standards? You know the "prefix this" and "suffix that" and "start all of these with a capital C" documents. These standards are the perfect method for making Code look Consistent, but always include the rule "use logical and descriptive names". A naming standard is to good names as "use pronouns clearly" is to good grammar.
It's a shame Visual Basic uses keywords like MustInherit and Overridable. The rest of the world talks about abstract classes and virtual functions, but Visual Basic has to be different. They say it's because VB is geared to the developer who wants to add value to their business. Yet the developer who is typing "MustInherit" clearly isn't thinking about a business problem - they are thinking about a class hierarchy. Why shouldn't VB have the same vocabulary as the rest of the OOP world? Ever hear of a MustInherit factory pattern?
For libraries and frameworks, the naming stakes get even higher. If the framework is going into widespread use, people will encounter the name in book titles, articles, power point slides, and technical conversations. People become attached to the name, as it covers many abstract and conceptual things. Witness the outcry over the Indigo to WCF switch, and the Avalon to WPF switch. Will Atlas stay Atlas, or will Atlas become the ASP.NET Client Side Integration Framework (ACSIF)?
Naming a product is the toughest assignment of all. We need to search trademarks and domain names. We need something that is snappy and looks good on a business card. The safe approach is just to make something up, like FlazBlatter. Someday, there will be a product named FlazBlatter, mark my words….
Comments
Even ignoring modern IDE features like autocomplete, which means you often only need to type in the first few characters of a name, a developer spends far more time reading code than writing it and abbreviating makes things just that much harder.
So the S/N ratio plummets by the time MS Marketing is done. There's no mental purchase there. Who other than *really* gung-ho MS, MS, rah-rah-rah types are supposed to differentiate between WPF, WCF, WWF, WTF... I think their marketing department needs to review Psychology 101.
Anyay, nice posting, the way you've unified all those seemingly different naming tasks is thought-provoking.
This just in: Microsoft is renaming themselves in 2008 to the "Windows Manufacturing Company".
Can't agree here. Those terms are for propeller heads, or medieval philosophers, I'm not sure which.
I prefer "nothing" to "null" and "MustInherit" to "abstract". Much easier to understand in plain English.
If you think you prefer terms like "abstract", it's probably because you have Stockholm Syndrome. You've been held hostage so long you've started to sympathize with your captors.
OdeToCode.Blogs.Scott.ThisPostHasNoName.IsInterestingPost
Sachin Joshi
www.fuzzydev.com
"Reason can answer questions, but imagination has to ask them."
- Dr. Ralph Gerard