这篇文章,是对我本身经常使用阅读源码的习惯的总结。html
(零):先作备份算法
当拿到一份源代码,无论是工做上临时接手的项目仍是平时在网站上down下来的demo,若是想要彻底看懂,每每须要作一些改动,有时候改动的比较多就会忘了原来的代码是什么样的,所以我建议,获得一份新的源代码后首先应该进行备份。架构
(一):编译跑一遍框架
当拿到了一份新的源代码,我不知道他的做用是什么,那么最好的办法就是先把软件编译之后跑一遍。若是发现软件编译时出错,那么显然,这不是一个好的源代码,这也就提不上快速阅读了,慢慢踩坑才是王道。post
(三):梳理数据的前因后果学习
计算机的最大做用是用来计算的,既然是要计算,那么就要有数据的输入和输出,例如我是作机器人的,工控机和下面单片机有着各自的任务,那么只要我找到工控机和单片机通讯的部分,我就就能够经过通讯的数据一步步查找数据的处理方法,最后获得一条数据从输入到输出的链路,这样虽然链路中每个调用的方法我不必定知道它是具体如何实现的,可是我能够大体获得每个方法的做用。网站
(四):阅读代码写注释spa
前面说的是比较粗略的作法,接下来要专一细节,就要阅读方法中的每一行代码,对于具体的方法,最好是有着算法文档,否则有一些代码,很难看明白,例如我学习牛顿迭代法时曾经见过使用该方法开方的代码,若是没有算法文档,绝对看不明白它的做用。debug
若是赶上没有算法文档的项目,那就只能本身硬看了,个人建议是每行写注释,这个有助于分清自写代码,结构代码,程序自带代码和第三方库的API。程序自带代码指的是相似MFC这样的框架生成时本身出现的代码。结构代码是由项目架构工程师写的,方便分工合做而使用的代码。分清这四类代码后就会发现,自写代码和调用第三方库每每是核心,可是刚开始最让人搞不懂的,是程序自带代码和结构代码htm
(五):本身尝试进行修改
俗话说,输出是最好的学习。在我大学的时候,个人导师跟我说,你学习一份代码,感受差很少了就上手改,若是改完的代码成功的跑了起来而且实现了你预期的功能,那么你就能够说已经学会了。所以我建议,对于一个源代码,到了最后的学习方法就是本身上手修改,在debug中学习是最快的,