When I read the source code of some large projects, I find it's hard to remember all important details. I may understand an elegant function today, but tomorrow I may forget it. Even worse, after I have finished tracing a tedious function call, I realize I have forgotten what the initial function does.<p>I wonder whether you take notes when reading source code. Is there any good way to read the source code of a large project? Thanks.
I usually try to make a UML Sequence diagram so I know what classes are being instantiated and what methods are being called as well as what's being returned. Also, I try to make as many type hierarchies as I can, especially when abstract classes are involved.