资料来源 : Free On-Line Dictionary of Computing
Hungarian Notation
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
(http://msdn.microsoft.com/library/techart/hunganotat.htm)}.
{Microsoft VB Naming Conventions
(http://support.microsoft.com/support/kb/articles/Q110/2/64.asp)}.
(2003-09-11)