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