程序员天天都在和代码打交道,通过数年的基础教育和职业培训,大部分程序员都会「写」代码,或者至少会抄代码和改代码。可是,会读代码的并很少数,会读代码且读懂大项目源码的,少之又少,这也形成了不少错误看源码的方式。java
那要如何正确的分析源码呢?程序员
今天跟你们分享一下我平时阅读源码的几个技巧,对于阅读java中间件,如Spring、Dubbo等框架源码的程序员们有必定帮助。本文基于Eclipse IDE,咱们天天都使用的IDE,其实它有不少强大的功能,掌握它们,每每可以事半功倍。编程
快捷键:Ctrl + T架构
查看类不少人可能都知道,可源码阅读的时候更多用来查看方法体系更重要,能够方便快速的定位到方法的实现类。如:框架
此时若是想查看getBean()方法如何实现,可能会让你失望。结果以下:源码分析
进入到了BeanFactory的接口定义方法,什么也没有。学习
此时咱们直接在getBean上 Ctrl+T :ui
能够看到其实现的子类,点击子类进去便可。此方法还适用于框架中很是常见的模板方法模式,在抽象类中定义的模板方法,用这招轻松找到实现类。线程
固然还有详细的Open Type Hierarchydebug
会在左侧视图里面展现更好的Type View:
快捷键:Ctrl+Alt+H
我的认为这是阅读源码最有用的利器,掌握它,能够轻松游走于各类方法调用之间,然而从我身边的朋友来看, 不少人都不知道它的存在。
Open Call Hierachy 查看结果以下,调用关系清晰明朗,能够直接定位到调用的地方。
断点调式时,心中必须很清楚F五、F六、F七、F8的做用,否则要么迷失于源码之中,要么什么都没看清就走完了。
再次啰嗦一下它们的做用:
调试时咱们可能会常常遇到loadClass的状况:
在40行想进入ClassPathXmlApplicationContext构造方法,F5不料进入了类加载:
熟悉类加载的同窗会很熟悉,不熟悉类加载机制的也不要慌,这是说明你调试的类第一次被加载,这时候咱们F7跳出类加载,回到40行。
这个时候再按F5会真正进入ClassPathXmlApplicationContext构造方法。
当咱们断点跟踪Spring这种源码的时候,必定要有节奏,以优先找到总体脉络为准,不要一直的F5进入每一行细看,F5下去,几天都走不完Spring。能熟练在Spring这种框架中F五、F六、F七、F8,就离弄懂它不远了。
Dubug的时候还应该注意debug视图的线程栈:
这个视图可以让你在走得比较深的时候,能够一眼看出本身怎么进来的,当前位于什么方法里等信息,还能够点击对应的代码行数进入查看。
总结,这是我使用IDE跟踪源码的几个小技巧,尤为是第二点,是很实用的,但愿对你们在进行源码跟踪时有必定帮助。看了这么多的源码,我对这些技术点进行了一个系统的整理,想要学会如何阅读源码,提高进阶的朋友们能够来下载资料,加入资源分享群:854601507,欢迎加群免费领取一块儿学习,相互讨论。
分享这份源码分析图给你们,但愿对你们有所帮助,架构师很漫长,一块儿共勉吧!
仅以身边朋友的一次成长经历分享给喜欢Java,喜欢编程,有梦想成为架构师的程序员们,但愿可以帮助到大家。