为什么要做源码分析,源码分析的整体思路,及怎样高效分析源码?

零、为什么要做源码分析

0.1 深入理解原理

源码分析可以对技术的实现原理、实现思路有更清晰的理解。这使得在解决问题时,可以快速定位问题,缩小调查范围,提高解决问题的效率。

0.2 学习最佳工程实践

一些受欢迎或是流行的框架或工具,经历了大量实际项目的检验。一般来说它们的源码的质量高、稳定性强、运行速度快。分析这样的源码,对于整体架构设计思路、算法、数据结构等,都会有更深的理解,可能会在以后的项目上运用或得到借鉴。

0.3 增强代码质量

可以学习到如何编写高质量的代码。包括如何使用变量、函数、类等元素来组织代码,如何编写清晰的注释和文档,如何遵循代码规范和最佳实践等。

一、源码分析的整体思路

我总结了下 自己的思路,以供参考:

1. 确定分析目的、分析边界
2. 收集权威信息与解读
3. 开始源码分析

1.1 确定分析目的及分析边界

这一步,其实是重中之重,以前我没太注意,后来渐渐觉得这对后面的工作起了一个指导性的作用。它可以避免你走入一些分支,或是浪费不必要的精力在一些细枝末节上。
心理建设:你一定要清楚,一次源码分析解决不了所有问题,也不能100%了解一个框架,不要过分提高对一次源码分析的期望,不要陷入“完美”这个陷阱。一次源码分析,如果可以成功解决一个问题就算是成功了。
确定分析目的,让你更专注。例如,我想知道 RecyclerView 的视图回收机制,确定了这个分析目的。就会让你专注在 Recycler,RecycledViewPool 等等这些与回收相关的逻辑上,缩小了分析边界。
确定分析目的,可以在阅读源码时,有意地跳过一些和主题无关的代码
有了分析边界,可以避免陷入源码分析大而全的陷阱 。实际操作中,最怕的就是无意义地逐行阅读,不停地跳进函数,一层层地深入。很容易把人转晕,你根本不记得,当前在哪儿,要做什么。使得源码分析难以为继,产生挫败感。让你觉得自己能力不够,看不懂,这是最差的情况。

1.2 收集权威信息与解读

这里的权威信息,主要是指官网信息。
以Android开发为例,这两个是我常逛的网站:
Android开发者网站:https://developer.android.google.cn/?hl=zh-cn
Android开源项目:https://source.android.google.cn/?hl=zh-cn

如果你要分析的主题或问题,官网有介绍或是讲解,请一定先把官网的信息解读完全。之后再去看源码。

好处是:
以极少的成本,获取第一手权威资料,而且由于是官网的信息,面向的是普罗大众,所以都是语言精炼的易于理解的,做的好的会有精致的逻辑图、或流程图。
对于核心概念的集中度高,相关联系也讲得清晰。且不会有错误,以产生误导。

其次,如果官网没有相关的信息,请去各大博客平台,先扫荡一圈,利用好搜索/AI工具。
总之,这一节的核心目的,就是在极短的时间内,建立起对目标的整体认知。

上面两步做好了,最后一步,才是开始分析源码。

二、怎样高效分析源码

这里以自己的经验,给几点建议吧

2.1 以目标为核心,寻找关键类、关键方法

通过1.1、1.2的准备工作后,在纸上罗列出与目标相关的关键类,最好画出他们之间的关系。
整体思路,还是从整体到局部。以防跑偏,心中常念目标,你要解决什么问题。

2.2 速读注释,通读,跳读,画图

速读注释:类的注释、方法的注释,请速读(前几句或第一段)核心介绍,不要把注释一个字一个字地读。
通读:有些核心方法,方法体特别长,调用链也很深。请尝试从头到尾读一遍,结合注释,先不要跳进某一个方法中。
跳读:一个方法体中,和目标相关的可能只有几个关键的调用,其他不相关的逻辑请跳过。保持思路的连惯性。
画图:将关键点、关键流程 用笔画下来,建议用传统的笔、本,而不用电脑的画图软件。目的是快速好用,不打断思路。

2.3 总结出文章

如果能输出出来,且讲得通俗易懂,就说明输入的不错。输出过程中,遇到的问题反哺输入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洛克Lee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值