Buy @ Amazon

Search This Blog

February 12, 2014

Still a fanatic of yesteryear's variable naming convention?


Quick Quiz


Do you (still) enjoy using any of the following stuff in pictures below? If yes, read no further.

Image source: Pixabay Image source: Wikipedia Image source: Flickr

The backdrop story for context and inspiration


In one of the training gigs for clean code at a so called ivy-league company, I was enquiring the team that attended my training on what is their code conventions for a variable name in their projects. The folks voiced in absolute enthusiasm that they follow industry standards of using a datatype as prefix for the variable name and ensure that the variable name is short enough to make sense for the developer to understand what it means.

Some personal and informal discussions with the folks led to the following observations:
  • They are basically clueless on why they do that they do. All they can claim is that they follow some best practices or industry standards.
  • Not one could say that they are actually following Hungarian notation as convention to naming variables. Personal discussion gave me an insight that they believe it is an industry standard because that is what their technical manager or some senior engineer who they can't question has insisted them to follow.

This is something you can witness more often than not in the mid-sized and large corporates that always cling to the imaginary "best practices" laid by the seemingly unquestionable superior (read it as senior) folks. These folks in my observation and understanding don't code every-day, have little respect for coders, yet interestingly enough set the technical standards.

Trouble with (bad) experience is difficulty in unlearning. Trouble with ego (that a stupid job title gives) plus half-baked experience is difficulty in reasoning. I empathise with the former and sympathise the latter. If you fall in the later category, read this post no further. If you fall in the former category, I'm with you and this blog post is for you to read and chew on.

Ok, now back to the business of picking some code snippets from the production code bases. The code snippets below meets the "industry standards" by the definition of the said team.
Now before we delve into why this is redundant to say the least, let us understand what is this practice all about by getting into some academics of it.


The Academics


First off, the naming convention that the team followed is Hungarian Notation, to be more specific they were following Systems Hungarian notation.

Hungarian notation (HN) is the practice of prefixing metadata (mostly the data-type) of the variable to its name. And there are two types of Hungarian notation - the Systems and the Apps. They both are similar in that they are prefixes to the name of a variable. They are different from one another in that the former advocates prefixes indicating the actual data type of the variable, while the latter advocates prefixes indicating the logical data type.

Some examples of Hungarian Notation to make things clear.

My Perspectives


There was a time when this (HN) was a big thing and made some sense - the times when IDEs were not as powerful as the contemporary ones. In the bad olden days the IDEs perhaps didn't have intelli-sense
  • to tell the programmer that they are using the variable of a particular type on hover,
  • to help the programmer with auto-completion of method names on adding a dot to the variable name
Microsoft for all I know was the first to think about programmer productivity and bring about the intelli-sense thingy. They had this practice of using HN in their Visual Basic (VB) days. I don't think this practice is stretched in the Dot Net world, which is a good indication to say that Hungarian notation is both redundant and an unwarranted pain. I guess I have seen these conventions in the Sun documentation for Java coding, perhaps a decade ago. You won't see them preaching it now in their docs.  Times have changed for better :)

For a moment, think about putting in practice the convention of HN for object naming as you code. Would you like yourself to care about
  • translating the solution in mind to code and validate it or
  • worry about conforming to the such conventions while coding
If you're in doubt, here is a pro-tip - always attempt to keep your code simple and smart. What does that mean? If your coding buddy can flip through your code like the pages in a novel, you're doing a great job. And things like HN are more a distraction to code readability.

Still not convinced? Here goes the question I ask my attendees who love HN in code. Would you like to prefix 'm' or 'f' to your name based on your sex, as in mAndy or fSandra? You certainly don't, right? Why then discriminate the code you read/write? Give it the respect it deserves.

Always strive to make code self-explanatory and easy for your fellow buddies to get acquainted with.

Happy code reading and writing!