1、不要为了看源码而看源码
2、代码积累到一定程度,遇到问题自然就去查源码了,然后你就看懂了
3、两年内不要刻意去看源码,可以点开简单了解一下就行,前两年疯狂做项目就行了,后期项目做的多了,你自己就会有疑问,每次写代码就会问自己为什么要这样写?底层的原理是什么?很自觉的带着问题就去看源码了,如果你没有这样的疑问,那说明你也不适合去看源码了,写写业务代码,了了一生
如何看源码
- 遇到一个不明白的模块,首先去网上查一下这个东西是干什么的,应该怎么用(不懂就问度娘)
- 找到核心类的入口,摸清运行流程,举例:假如你要看的是某个注解,注解点进去有import的注解,那么一般来说import引入的类就是关键了,点进去查看
- 看结构(ctrl+h)有父类就一层层看父类,有接口优先看接口,一定要下载源码查看上面的注释(老办法英文不好问度娘),一般来说注释会详细介绍这个接口/类的功能
- 灵活运用alt+f7,就是find usages
- 学会查看引用栈,能掌握每一步代码具体做了什么以及当前引用的类型等信息
看源码的一些通用方法:
1、先看文档,整体把握
一般来说,文档是对代码的高度凝练,一个高质量的开源一般会包含tutorial、specification、API reference等documents,通过选择性的略读、精读这些文档,就能大致了解项目的整体架构、设计原则。6 大设计原则,你知道吗?
正确的路线是通过文档去认识这个项目,然后通过阅读代码去验证文档、深入细节,而不是通过直接啃源码来了解这个项目,以偏概全
2、理解代码组织,文件名,类名
当需要看代码的时候,不要找到一个文件就开始,先看看代码组织,粗略看看文件名、类名,基本就能猜测到每一部分。比如redis的源码就组织得很好,基本上看文件名就可以快速定位每一个command的实现位置
3、关注一个问题,从问题追踪代码
看源码的目标决定了此时此刻的关注点,不管是解决遇到的bug还是学习某个算法,都让我们聚焦到一个具体的问题,从这个具体的问题去追踪代码,忽略掉当前无需关注的细枝末节,步步深入,直达目标
当然在解决一个问题的时候,有可能会引发新的问题,尤其是学习的时候,此时只需记录新问题(放到收集篮,不要立即发散),待之前追踪的问题解决之后,再来看新发现的问题
4、解决一个issue
如果自己没有问题,那么就帮忙解决别人的问题,通常来说,开源项目都有许多待解决的issue,从中选择一个入手即可
5、调试
只要可以,一定先让代码编译通过、跑起来,这样不管是加log、打印调用栈还是断点调试都方便很多,不跑起来很难知道到底在干啥
6、加注释,做笔记
如果某份源代码的阅读并不是一锤子买卖,日后还可能回顾、重新阅读,那么就一定要做好代码注释和笔记。笔记主要是框架图、类图、流程图,目标是建立索引,方便日后快速回忆
而注释就是阅读代码时的细节,重新阅读的时候看注释(特别是函数的注释)能节省很多时间