阅读别人的代码作为开发人员是一件经常要做的事情。一个是学习新的编程语言的时候通过阅读别人的代码是一个最好的学习方法,另外是积累编程经验。如果你有机会阅读一些操作系统的代码会帮助你理解一些基本的原理。还有就是在你作为一个质量保证人员或一个小领导的时候如果你要做白盒测试的时候没有阅读代码的能力是不能完成相应的任务。最后一个就是如果你中途接手一个项目的时候或给一个项目做售后服务的时候是要有阅读代码的能力的。
1:找相关的书
在看相关源码时应该对程序有整体了解,比如看虚拟机时至少要知道:垃圾回收算法,Java内存布局,class文件格式,加载连接的过程...很多人看源码一点头绪都没有,就是因为不了解对应的模块是干嘛的(比如Java是模板解释器,而不是字节码解释器,call_stub()是为了找到对应模板入口),了解这方面比较好的就是看官方文档,或者看对应源码解析的书
2:工具
看类库首推idea,多用Structure,多自动生成UML图。先搞清楚接口和类之间的关系,在去分析函数。虚拟机的话还是用VS吧。vim好像不太合适。虽然我是vim粉。
3:阅读注释
有很多时候注释才说明一切,举几个很简单简单的例子,在IO阻塞的时候线程是出于BLOCKING还是RUNNABLE,线程的interrupt会中断那些函数?注释里都说的很清楚,看到函数的时候只要简单读读注释就知道了。
4:有目的性
源码量那么大,不要妄想一口气都看完。最好符合你当前的目的,比如你想搞懂多线程,你就主要看JUC,想搞懂IO就多去看NIO,想看常量池就去看ClassFileParser。看模块的时候,要注意接口大于一切,或者说函数大于一切。先不要妄想搞懂所有细节,先找几个比较关键的函数,搞懂函数的作用(比如应该仔细分析一下函数名称和参数名称)然后再往下进行。再看Java类库的时候要多注意类是不是abstract的,是不是用的模板方法,多关注函数前的修饰词,这一般说明这个函数是给谁用的。多注意这些细节而不是傻傻的过一遍逻辑,能从里面学到不少关于设计的东西。还可以注意什么地方是为了之前的设计而委曲求全的做法,毕竟一个这么多年的类库,肯定不是什么地方都是完美的。
5:实验+debug
可以多做做实验,ide的断点都很好用,记得之前看tomcat的源码就一直debug。
WRITE-BUG研发团队衷心希望【WRITE-BUG数字空间】可以给每位同学一个属于自己的秘密空间,同时祝愿大家在“公开圈子”世界里,遇见志同道合的伙伴们,因为我们与大家一样,都曾孤独前行着。
标签:类库,函数,jdk,源码,阅读,时候,搞懂 From: https://blog.51cto.com/u_16125770/7275787