写点什么

如何阅读别人的源码

用户头像
熊斌
关注
发布于: 2020 年 12 月 24 日
如何阅读别人的源码

平时工作中,我们程序员的工作内容之一就是要阅读别人的源代码。阅读源码也是有技巧的。并不是拿到源代码一头扎进去就开始阅读,那样不仅效率低,收获也不大。下面就分享一下,我用的阅读源码的方法。



阅读源码的第一步



要搞清楚你的目的是什么?因为阅读源码不像读闲书,可以放松,有经验的同学都知道,阅码很难,它是架构的反向过程。类似于反编译,不是指令级别的反编译,而是需要根据指令反推更高维的思想。

为何要读别人的代码?



我们的目的可以分为以下几类:

  • 评估是否引入某第三方模块

  • 给某模块局部修复Bug

  • 以某开源模块为榜样去学习

  • 接手并长期维护某模块



搞清楚阅码的目的之后,还要记得,阅码也是要有产出的,输入+输出在阅码的过程中同样适用,有产出是最好的学习方式。

阅读源码的产出物



这里的产出物应该是构建这个程序的思路,也就是架构设计。



如何读?



有文档,一定先看文档

通过阅码与文档相互印证,如果发生冲突,我们需要及时修改文档到与代码一致的版本。我们要理解系统的概要设计,把握住各个软件实体的业务范畴,以及它们之间的关系。

整理规格说明

把公开的软件实体的规格整理出来,这里可以用javadoc等工具,前提是代码得写的好才能生成的准确,有用。

看example、unit test

这些属于我们研究对象的客户,就是适用房,它能够帮我们理解各个软件实体的语义,我学完之后,一直是这么做的,功效神奇。

选重点的类或函数,证伪

如果我们的理解被证伪了,需要重新梳理



如何搞清楚业务流程?



大招就是这个公式:程序 = 数据结构 + 算法,再牛逼的程序都逃脱不了这个公式。我们要做的是,把业务流程相关的数据结构理清楚就行了。



理清楚业务流程后,就是理各个UserStory的业务流程,并画出对应的UML时序图。这个图可以随时补,优先挑选对我们工作有利的那个模块来做就好。



最后,我们要把自己的结论写下来,变成架构文档的一部分,随着越来越多的人去补充完整架构设计文档,,才有可能把我们的项目从混沌中解脱出来。



发布于: 2020 年 12 月 24 日阅读数: 45
用户头像

熊斌

关注

心中有月亮,手中有六便士 2017.12.01 加入

程序员|得到大学6期学员|极客大学算法训练营5期学员|宅男

评论

发布
暂无评论
如何阅读别人的源码