Hungarian Notation

<language, convention>

A linguistic convention requiring one or more letters to be added to the start of variable names to denote scope and/or type.

Hungarian Notation is mainly confined to Microsoft Windows programming environments, such as Microsoft C, C++ and Visual Basic. It was originally devised by Charles Simonyi, a Hungarian, who was a senior programmer at Microsoft for many years. He disliked the way that names in C programs gave no clue as to the type, leading to frequent programmer errors.

According to legend, fellow programmers at Microsoft, on seeing the convoluted, vowel-less variable names produced by his scheme, said, "This might as well be in Greek - or even Hungarian!". They made up the name "Hungarian notation" (possibly with "reverse Polish notation" in mind).

Hungarian Notation is not really necessary when using a modern strongly-typed language as the compiler warns the programmer if a variable of one type is used as if it were another type. It is less useful in object-oriented programming languages such as C++, where many variables are going to be instances of classes and so begin with "obj".

In addition, variable names are essentially only comments, and thus are just as susceptible to becoming out-of-date and incorrect as any other comment. For example, if a signed short int becomes an unsigned long int, the variable name, and every use of it, should be changed to reflect its new type.

A variable's name should describe the values it holds. Type and scope are aspects of this, but Hungarian Notation overemphasises their importance by allocating so much of the start of the name to them. Furthermore, type and scope information can be found from the variable's declaration. Ironically, this is particularly easy in the development environments in which Hungarian Notation is typically used.

Simonyi's original monograph.

Microsoft VB Naming Conventions.

Last updated: 2003-09-11

Nearby terms:

humourhungHungarian NotationHungry Programmershungry puppy

Try this search on Wikipedia, Wiktionary, Google, OneLook.