Hungarian notation was invented by Charles Simonyi (a Microsoft employee of Hungarian extraction) and presented in his thesis on meta-programming. Essentially it consists of a naming convention whereby the items named have information about them encoded in their names - hence "meta-programming". This allows you to do visual type checking, and eliminates a lot of the up-down flick reading required in C code to get from variable declaration to variable usage (free variable declaration in C++ eliminates much of this, but there's all that legacy code to consider).
Where I part company from Simonyi and MS is the degree to which he/they use the notation in a problem-domain way rather than a language-domain way. For instance, take a look at some MS source code: you'll see counter always referred to with the prefix 'n' (which simply means a counter in pure Hungarian), irrespective of whether that counter is declared as an int, an unsigned int, a BYTE, whatever. Similarly, f - meaning flag - may be used to mean a simple BOOL or a UINT array of binary bits. This allows the underlying type to be re-declared without changing the code (not something you do very often) but throws away at a stroke the advantages of visual type-checking (I read code every day).
I don't use Hungarian on C# code because the youngsters don't grok it, but for older C/C++ code I still it for things like strings, which have multiple possible representations. This is the way I used Hungarian in the past:
<scope prefix>_<modifier><type><CapitalisedVariableName>
The scope prefix is omitted for local-scope variable. So for example :
iCounter | Integer counter, local scope |
aiSalesFigures | An array of integers representing regional sales figures, at local scope. |
g_dwLbIndex | DWORD listbox index, with app-global scope |
mg_byOffset | A BYTE offset with module-global scope |
m_byMachineNo | A class member variable which is a byte containing a machine number |
szCustomerName | A zero-terminated string containing a customer name, local scope. |
For further information, visit this link :