阅读源码的心得

为什么阅读源码

其实阅读框架或者程序的源代码,对编码能力的影响并不大,更多的是熟悉该框架或者对这类型的程序如何实现的会有一个理解。所以我觉得阅读某个框架的源码和结构,有下面的优点:

  • 熟悉该框架或者程序的结构,方便调优和定位问题
  • 同样,有特殊需求的话,更加方便对框架进行改造或者实现类似的功能
  • 如果源框架的代码结构良好,可以学习并模仿
  • 方便面试

所以,对于经常使用或者一些行业内最常使用的框架(比如Java的Spring,Python的Django等),熟悉它们的内部实行,是有一定好处的。毕竟,再怎么看网上博客的总结,还是不如自己去总结来得印象深刻。

什么情况下才适合阅读源码

就像上面说的,个人觉得阅读源码的好处,多半是在对已使用的框架或者软件深入了解。如果一开始,就对一个陌生的没有使用过的软件读它的代码,那样是浪费时间和及其辛苦的,因为整个软件和框架的功能和思想都没有了解,是很难理>解的。

所以我认为,只有使用过并且相对熟悉的框架或软件,才适合进行源码的阅读,不然,还不如去读框架或软件的说明文档。

同时,阅读框架源码,未必是你最急需需要了解这个框架的事情。比如你要使用一个Web框架,最通用需要理解的,其实是整个HTTP协议,理解了HTTP协议再看Web框架的源码,才事半功倍。又比如Redis的,在读之前,先了解一下Redis的数>据类型和有什么数据结构,这样会看起来更加轻松。

阅读源码的着手点

从自己常用的功能开始

首先,最简单最有用的源码阅读,还是从自己常使用的框架的函数开始。这个方法对一些框架特别有用,比如一些Web框架,你可以从你调用的Request对象是哪里传进来的,一步一步深入去看,可以把不明白的地方先忽略,先理清楚整个Request的数据是从哪进来的。由于你经常使用这个框架,这种方法能够是你更简单迅速的理解你使用的那一块的功能。

当然,对于非框架的,软件也同样使用。比如Reids的源码,其实你一开始未必需要从main()函数看起的,只需要找到自己常用的数据结构的源码,先从数据结构部分开始理解。

源码项目的结构文档

很多开源项目,其实都会有一个份文档,会将代码各个模块实现的功能,分清楚。参照着这份文档阅读想要理解的部分其实是最好的。

当然,部分项目没有这个文档,但多半会在每个文件头的注释中,写明该文件主要做的事情,这也是一个着手点。一个代码结构好的项目,其文件名和报名,就能大概猜出来是处理什么的了。

启动函数

main()函数开始读,是一个很多人都推介的方法。但是,我个人习惯,还是先阅读常用功能的,从常用功能开始,困难度稍低,而且能使得我们对框架软件有个稍微的了解。而从main()开始阅读,就是对整个框架程序从整体开始了解>了,会掌握整个程序的执行顺序,理解更加全面,同时理解起来,会比从功能开始要复杂些。

配合着文档和博客熟悉

先从官方文档和网络上各位大大的博客了解软件,会使得我们阅读起来更加简单,事半功倍。但是也要注意的是,软件和框架是有更新的,虽然整体的变化可能不大,但经常会有不少地方修改或者优化掉了,比如《Redis设计与实现》是总结 的很好,十分到位的,但是里面有些已经是比较旧了。正所谓偏听则暗 兼听则明,阅读的时候,一遍看文章,一遍对着自己所需版本的源码参考,是最快捷最正确的。

转载于:https://my.oschina.net/jianming/blog/3000951

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值