下面说的都是在没有文档,注释不完全的情况下理解别人的代码,主要分几种情况吧。
1.细节上的代码,比如计算过程,或者文档处理过程的代码,能够运行一遍,单步走一遍最好,如果不具备Debug条件的,那么需要就添加点print语句看看运行轨迹,在不行的话就拿好纸和本子,一步步算过去;
2.功能上的代码,先通过一些敏感的词汇猜测代码的功能,比如requestAlarm之类的,基本上就是请求告警,带这个这个目的阅读下面的代码,如果不对那么就重新猜测;
3.框架性的代码,先要对设计模式有一定的理解,GOF的23种模式一定要看(这本书名字就不用说了),然后就是软件架构模式(POSA v1-v5,这本书比较厚,看不懂不用强上)。看完之后在看一些大型的软件代码就比较方便,比如看到代码里面visitXXX的函数,基本上就是visitor模式了,这个时候你只需要了解数据结构和visitXXX方法就行了,其他的根本不用看;在比如,如果看到代码里面有Adapter的关键字,基本上就是适配器,找到接口转换的代码看看得了,其他的也不用看;在比如,如果看到Refactor关键字,那就是反应器,看到POSA上的UML图也知道自己需要关心那些函数,那些函数不需要关心。
阅读代码的时候好的IDE比较关键,可以快速的进行跳转,迅速构建UML的结构。如果没有好的IDE也无所谓,Ctrl-F或者Ctrl-Shift-F甚至find . -name "*.cpp" | xargs grep -n XXX也能完成这些工作。
写代码的时候,强烈不要依赖IDE,至少把代码提示给关了,这样增强自己的记忆,阅读代码的时候会好很多。
本人C++写的比较多,Java稍微少一些,Python用的不多,Python基本上要么是subline要么是vscode,难得折腾大的IDE。读过的主要是C++的代码,曾经一个项目,几十万行的代码,文档几乎没有。读过的Java代码一般是开源项目,Javadoc比较完善,Python除了书本上和demo几乎没读过什么大的代码