为什么要读源码?
第一个好处:积累素材
读优秀的源代码,对提高自己的编程水平帮助更大。可从别人写的优秀的源代码汲取营养,学习到更多的编程方法和技巧。
第二个好处:开拓思路
可以提高自己把握大规模源代码的能力。源代码往往是经过了长时间、多版本进行迭代,是不断开发,优化,修正错误,添加功能而发展起来的。是前人智慧的结晶。阅读大量源代码后,能提高自己对软件的设计的把握能力,快速了解脉络,熟悉细节。
第三个好处:总结升华
获得一些优秀的代码编程思想。既可以提升编程技巧,也可以提高编程的架构能力。打开自己的设计思维,提升自己的设计能力。
读取源码的技巧
1. 先看官方文档和架构图
优秀的开源组件官方都会维护文档和架构图,这份架构图上或许有一些最重要的组件之间的关联关系、或许哪些功能的调用流程、或许有一些别的东西,但是相信我,这些东西一定都是从总体来描述这个项目的,这个一定是你要阅读源码时第一个要看的
2. 再看项目的组织结构
下载下来代码之后,不要急着开始。先看一下各个包名和包里的类名,对照着文档和类名先简单猜一下各个类的大致作用
3. 找到启动demo,把项目跑起来
阅读源码不仅仅是阅读,要让项目跑起来,去调试它,去观察和改变它的运行路线
4. 找到阅读的起点
很多人都想阅读源码,但是面对庞大的代码库不知道如何下手。这个时候你就要明确你的目标。
可以从启动方法开始、也可以从具体的哪个功能开始。总之要找到你的起点
5. 理清主干
一个优秀的开源软件总是经过了很多工程师很多年的努力孵化出来的,你去阅读它的时候很难把整个软件全部都整明白。所以一定要认准自己的目标,朝着自己的目标去读,当过程中出现一些不太重要的分枝时可以适当的忽略来节约时间
6. 把你的结论记下来
好记性不如烂笔头,我们从小就知道的一句话。包括且不限于笔记、流程图、截图等任何你擅长的工具,把它记下来。另外,最好总结一下重点部分方便面试的时候快速复习
7. 查看类的继承体系、调用层级、类UML图
查看类的继承体系 快捷键:Ctrl+H
查看方法的调用层级 快捷键:Ctrl +Alt+H
优秀的源码往往调用层级很深,当你debug到某个点却忘掉了怎么进来的或者说不知道哪个地方调用了这个方法,只需要在方法名上使用Ctrl +Alt+H即可查看这个方法的调用层级
查看类UML图 快捷键:Ctrl +Alt+Shift+u
当使用Ctrl +Alt+Shift+u会在新的标签页中展示当前类的UML继承图
这个继承图相比较于第一个查看类的继承体系外还有以下优点:
使用UML图形展示看起来更舒服更全面
支持手动排除不相关的类和接口
支持展示类的属性和方法等相关信息
当你仅仅只关注UML图时还可以使用Ctrl +Alt+u在当前标签页浮动显示一个图层
8.多个源码版本相互印证,没必要看最新源码
版本间会有升级记录和bug修复,这些点也是源码成长之路,是个避坑指南,最新源码可能不稳定,一味追求最新源码,费时费力。
9.不要过分执着代码细节
和读书类似,不要过分扣细节,书是作者在阐述自己的观点,你只要get到书中要点,并且有自己的看法,那么你实际上就已经收获了书里的精华了,没必要死抠细节。
源码也是一样,大部分的代码都是为了辅助核心代码来完成核心逻辑的,没必要一字不落的将所有代码都读完,效益比不高。你需要学习的是设计思路。
10.自顶向下梳理
越上层的模块,功能越多,但数量越少。我们可以从顶层的模块梳理出大致的流程关系,然后通过不断的深入,来梳理细化流程。就像思维脑图一样。后面的文章会具体的讲解如何梳理这些模块。
11.自底向上归纳
思维脑图的一个问题就是「只管拆分,不管归纳」!归纳其实是非常重要的一环。当你梳理了细化的流程后,需要将细化流程整合归纳到整体流程中,通过不断的归纳,你才能理解整体的流程。
12先做减法,再做加法
无论项目代码多大、版本怎么变化,核心的功能是基本不变的。先自顶向下的去不断的剔除非核心的组件/包/类,找到核心的模块/包/类。梳理出核心流程后,在核心流程的基础上再进行扩展,引入其它流程,以构成完整的项目流程。
13.与别人的源码理解相互印证
寻找别人阅读源码的笔记,去做一个印证,往往没有思路的地方,看到别人的理解,有种恍然大悟,茅塞顿开之感。
14.Debug时修改变量(作为辅助)
当你在Debug的时候可以使用Alt+F8唤起这个界面
在这个输入框中,你可以直接修改当前能够看到的变量,当存在以下场景时这个功能真的是绝配
当存在很多分支的时候修改某个变量来改变代码运行的逻辑
不确定某句代码结果时可以直接在文本框输入,而不需要再次重启程序
更多消息资讯,请访问昂焱数据。https://www.ayshuju.com/home