如何阅读别人的源码
平时工作中,我们程序员的工作内容之一就是要阅读别人的源代码。阅读源码也是有技巧的。并不是拿到源代码一头扎进去就开始阅读,那样不仅效率低,收获也不大。下面就分享一下,我用的阅读源码的方法。
阅读源码的第一步
要搞清楚你的目的是什么?因为阅读源码不像读闲书,可以放松,有经验的同学都知道,阅码很难,它是架构的反向过程。类似于反编译,不是指令级别的反编译,而是需要根据指令反推更高维的思想。
为何要读别人的代码?
我们的目的可以分为以下几类:
评估是否引入某第三方模块
给某模块局部修复Bug
以某开源模块为榜样去学习
接手并长期维护某模块
搞清楚阅码的目的之后,还要记得,阅码也是要有产出的,输入+输出在阅码的过程中同样适用,有产出是最好的学习方式。
阅读源码的产出物
这里的产出物应该是构建这个程序的思路,也就是架构设计。
如何读?
有文档,一定先看文档
通过阅码与文档相互印证,如果发生冲突,我们需要及时修改文档到与代码一致的版本。我们要理解系统的概要设计,把握住各个软件实体的业务范畴,以及它们之间的关系。
整理规格说明
把公开的软件实体的规格整理出来,这里可以用javadoc等工具,前提是代码得写的好才能生成的准确,有用。
看example、unit test
这些属于我们研究对象的客户,就是适用房,它能够帮我们理解各个软件实体的语义,我学完之后,一直是这么做的,功效神奇。
选重点的类或函数,证伪
如果我们的理解被证伪了,需要重新梳理
如何搞清楚业务流程?
大招就是这个公式:程序 = 数据结构 + 算法,再牛逼的程序都逃脱不了这个公式。我们要做的是,把业务流程相关的数据结构理清楚就行了。
理清楚业务流程后,就是理各个UserStory的业务流程,并画出对应的UML时序图。这个图可以随时补,优先挑选对我们工作有利的那个模块来做就好。
最后,我们要把自己的结论写下来,变成架构文档的一部分,随着越来越多的人去补充完整架构设计文档,,才有可能把我们的项目从混沌中解脱出来。
版权声明: 本文为 InfoQ 作者【熊斌】的原创文章。
原文链接:【http://xie.infoq.cn/article/04283813043845739fa52bf3c】。文章转载请联系作者。
评论