往往程序员在接触源代码时有抵触情绪,包括我自己,今天看了一篇《如何看懂源代码--(分析源代码方法)》,建议去看看,虽然是机器翻译的有点长(原文找不到了),但也会学习到很多东西。
记录下自己的读后感,消除内心深处对陌生事物原始恐惧感。
(一)调整心态,积极面对
人类内心深处对于陌生事物存在原始的恐惧感,往往起初内心会排斥去了解源码,不知如何阅读,更加会让自己用消极的心态去面对。
作为程序员面对源码是必然的事情,反正都已经上了贼船,何不以积极的心态去面对,一步一步的找到适合自己的阅读方式,再回头来看都是小菜。
阅读代码的同时会吸收作者的编码风格,看多了自然就形成了自己的风格,吸心大法也就会了,功力自然大大提高。
(二)使用高效工具
工欲善其事,必先利其器
这道理谁都懂,但是如何找到神器呢?(还望大家多多授渔)
Windows用Source Insight,Mac用Sublime Text 2(谁有更好用的别藏着)
(三)摸清源码全貌与行为目的
阅读源码时这点重中之重
要了解一个系统,最好是采取由上至下的方式。先试着捕捉系统架构性的观念,不要过早钻进细节,因为那通常对于你了解全貌,没有多大的帮助
先弄明白系统的整体架构,然后才去由上至下去了解系统的骨干,支柱,核心,搞明白系统组件之间的关系,界定系统组件之间或与其它系统之间的边界。
阅读源码时要有层次感,定义出各个组件之间的角色关系,以角色来了解互动模式,这样能更容易理解代码的运作方式。
这好比在理解某些功能时,把功能行为与现实生活进行结合,会使自己更容易理解其含义。
阅读时可根据命名惯例、注释帮助了解其行为功能,可以提高效率。
(四)由上而下抽丝剥茧
全貌已有所了解,接下来几点对程序抽丝剥茧
- 找到程序入口
- 了解程序如何初始化
- 根据阅读目的决定展开节点数
- 根据需要的节点数,记录树状结构(阅读同时记录),适度忽略不需要的细节。
- 无法望文生义的函式,先试着预看一层
对系统框架全貌、行为功能、结构有一定认识后,便可根据需要了解任何片段的细节,此时才是细读时机。
(五)换位思考
阅读源码时尝试将自己置身于作者编码时的心态,去体会作者当时心理和处境。
当然源码可能由多人维护,阅读时可能会呈现多种编码风格,多多去体会,形成习惯,日后会提自己高阅读速度,久而久之就会形成自己的编码风格。
(六)坚持写博客
源码阅读完后,有空就抽时间把自己的心得体会记录下来,写的同时可能会发现之前明白的点前后会存在冲突,去针对性的学习,会进一步加深对源码的理解。
(七)重复阅读
温故而知新,不得不服古人说话,短短的几个字就把道理包含其中。
每次阅读都会加深对源码的理解,会发现新东西,一个不懂的地方,看10遍,20遍肯定能懂。
总结
心态调整很重要,只要积极的去面对,坚持去做,后面那些都不是事儿。