阅读开源框架的源码是一件很困难的事情。
首先,需要克服自己的畏难心理,觉得源码阅读不是我们平凡人可以做的事情,其实恰恰相反,好多平凡人就是靠一点一点的努力阅读完相当多的源码的。
其次,认为阅读源码是一件很快,很简单的事情,其实,恰恰相反,阅读源码是很慢并且很复杂的一件事,很多时候,读到一个关键的地方,需要很久才能明白,少则几个小时,多则几天,甚至几个月。
最后,认为阅读源码必须跟代码,其实,恰恰相反,有时候,阅读源码不需要跑起来程序,因为本身代码就是逻辑,头脑中就应该会形成他们的执行情景。
最后的最后,认为源码必须从开始的地方读,其实未必,有时候,我们可以挑自己感兴趣的地方读,而跳过我们不需要读的代码。
有一种编程思想叫面相对象,同样的,我们读开源框架的源码的时候,其实也可以采用类似的方式,我们把实现某类功能的具体代码放到一起,将它们定义成一个组件,这样,一个一个组件的读,总能够读完所有的代码的。
如果每天读一点代码,熟悉几个类,那么慢慢地,我们就能接近核心功能。
其实,读代码是一件相当耗时的事情,少则几小时,多则几天,甚至几个月,我以前读过很多代码,但发觉效果不怎么样。我发觉,读代码需要记录思路,否则,读了也白读,记住的还是流程。流程这东西,如同算法,记住的都是过程性的东西,很容易遗忘。
现在我时常花点时间研究一些框架的源码,慢慢的研究,不求有多么理解它们具体是怎么工作的,只是稍微了解它们是用来干什么的,在哪里有可能会出现。慢慢地,我们踏平外围的阻碍,那么接近核心功能就轻而易举了。
我以前看代码,都是直接看流程,但是,流程这东西,谁又能记住呢?所以说,还是记住某个类的功能,如果很重要,就要研究它的实现方式。
我每天都会熟悉5到10个类的功能,用法,基本使用方式,其实花不了多少时间,只是记住名字,记住功能而已。
当我感觉自己差不多能够实现无障碍的阅读源码了,我再把所有的流程串起来,一气呵成的读完。感觉看框架代码,一定要多看,多想,多思考,总结规律,才能面对同样的代码面前,举重若轻,轻轻松松。
首先,看一个类的顶层类,这个是接口,或是抽象类,一定要明白当前类的一些功能,别追究细节,要看这个类能干什么!!! 然后,继续往下看它的继承类,也是,需要看它能干什么!!!最底层的类是面向终端用户的类,看看哪些方法借助了父类实现的。
看代码,以点带面,慢慢补全自己的理解,一个一个类去看怎么实现的。不能任意就跟近一个类去看,看见方法,就点进去看,否则,容易迷失在代码的海洋里走不出来。
要快速理解框架代码是很难的,除非以前就看过这个框架的代码,所以,还是要在业余时间,将自己项目内最常用的框架,多熟悉熟悉,知其所以然,这样才能临危不乱。
所有评论(0)