How to read code without any struggle

c++, design-patterns

Solution

There is only way I've found to get better at reading other peoples code and that is read other peoples code, when you find a method or language construct you don't understand look it up and play with it until you understand what is going on.

Hungarian notation is terrible, very few people use it today, it's more of an in-joke among programmers.

In fact the name hungarian notation is a joke itself as:

"The term Hungarian notation is memorable for many people because the strings of unpronounceable consonants vaguely resemble the consonant-rich orthography of some Eastern European languages."

From How To Write Unmaintainable Code

"Hungarian Notation is the tactical nuclear weapon of source code obfuscation techniques; use it! Due to the sheer volume of source code contaminated by this idiom nothing can kill a maintenance engineer faster than a well planned Hungarian Notation attack."

And the ever popular linus has a few words to say on the matter.

"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."

- Linus Torvalds

EDIT:

Taken from a comment by Tobias Langner.

"For the differences between Apss Hungarian and Systems Hungarian see Joel on Software".

Joel on Software has tips on how to read other people code called Reading Code is Like Reading the Talmud.

Problem

I am a new to professional development. I mean I have only 5 months of professional development experience. Before that I have studied it by myself or at university. So I was looking over questions and found here a question about code quality. And I got a question related to it myself. How do I increase my code understanding/reading skills? Also will it improve the code quality I will write? Is there better code notation than Hungarian one? And is there any really good books for C++ design patterns(or the language doesn't matter?)? Thank you in advance answering these questions and helping me improving :) P.S. - Also I have forgot to tell you that I am developing with C++ and C# languages.

Original source