关于阅读开源项目的源码,有哪些经验值得分享?

我先说下自己的经历吧。

我比较完整的读过的有wordpress,ttserver(tokyotyrant+tokyocabinet),memcached,redis的源码,最近正在系统地读nginx的源码。

相信重复的力量

读源码过程中最深的一点体会就是,重复重复再重复。当年读ttserver源码是刚入行,本来对C就不熟,ttserver里有很多比较奇怪的代码习惯,于是硬着头皮vim一行一行一遍一遍地看,有些不懂的地方,看十来遍,还真就懂了,可能算是量变引发质变吧。

从数据结构入手,先想后读

然后后来我学聪明了一点,不再从main函数一行一行的开始,学着先读 .h 文件,了解数据结构,结合能找着的文档,脑补作者的思路,在这个基础上再去读源码,看自己和作者想的有什么不一样,经常能发现自己错误或者不周全的地方,偶尔也能窃喜和大师们的不谋而合。

善用工具

再后来发现原来有ctags这类东西,如有神助,加上这时对C语言的基本写法有了一些了解,读码效率顿时提升。今年下半年在lua和nginx中选了先读nginx代码,目前结合一些工具做记录,也颇有成效。

理论与实践结合

当然,我读过的所有源码,都不是为了读而读,基本都是我工作中经常会用到,会面对的一些东西。所以这里有一点也很重要,建议最好先了解你这个东西的功用,再去读源码,否则真的很难读懂。最最好的当然是经常用到的东西,自己对其本身的功能已经很熟悉了,甚至说内部实现机理都能略说一二,这时候读起来肯定更省力。

教就是学

读码之后写文章也不错,有时候你以为自己读懂了,真提笔要写一个模块分析的时候,突然发现还有东西是模糊的,或者前后逻辑串起来是矛盾的,这种事也常有。于是我一直认为,能真正写出一篇让人看得懂,没有问题的分析文章,才真的算是读懂了一个模块。

我就先扯到这,期待更多牛人们的分享!

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片