A BIG FAT NO!!!! Whoever invent that notation has caused un-told sufferings for C++ beginners but luckily it is restricted to Windows API. Can you image this notation is carried over and adopted for Unix/Linux system calls API ? Or even carried over and adopted for Java API ? The reason it is contained within Windows API speak of it's "popularity or non-popularity" within the developers community isn't it ?:P
Since we are on the notation topic, how you all give your variable naming ? For C++ data members I like to use m_XXX or mXXX. For static I like to use s_XXX. That's it, the rest are just descriptive names with no prefix or suffix.
Come and share your own variable naming convention :P
I use my own muddled and broken variation of Hungarian Notation when working on projects that I can guarantee no one else will ever need to see the code of.
I like to use the 'm' to indicate a member, but I don't put the type in the variable name. Mainly because it's pointless and it causes problems if the type has to change at a later time.
I also like to prefix member variables with an underscore, but mostly to help code-completion be a bit smarter and so that I can use the non-prefixed name for accessor/mutator functions:
1 2 3 4 5 6
struct Foo {
int& x();
int x() const;
private:
int _x;
}
Of course, this goes out the window if I'm mainly using a non-standard library that doesn't do something similar to this. It's all about adapting to the current library/standard/language.
Encoding the type of a function into the name (so-called Hungarian notation) is brain damaged—the compiler knows the types anyway and can check those, and it only confuses the programmer.
Aside from this point (certainly the biggest reason NOT to use it):
it causes problems if the type has to change at a later time.
it is also quite impossible to do inside any template function unless you go with a "t" prefix, which is about as useful as naming every single one of your classes beginning with the letter "C".