源码阅读学习的捷径.pdf

源码阅读学习的捷径.pdf

ID:52254822

大小:230.78 KB

页数:5页

时间:2020-03-26

源码阅读学习的捷径.pdf_第1页
源码阅读学习的捷径.pdf_第2页
源码阅读学习的捷径.pdf_第3页
源码阅读学习的捷径.pdf_第4页
源码阅读学习的捷径.pdf_第5页
资源描述:

《源码阅读学习的捷径.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、源码阅读,自然是计算机学习的捷径之一,其重要性在此就不再赘述。因项目需要,最近在读OpenSSH&OpenSSL的源码库,一开始进展奇慢,龟速,后来掌握了一些技巧后,快了一些。在此,将我总结的所谓的“技巧”贴上来,我先扔出一块砖,大家拿玉的砸过来!!读一份好的源码就像挖宝藏。1.工欲善其事,必先利其器——铁锹?源码阅工具推荐:桌面软件或web开发推荐msvs或eclipse+plugins,即相应的IDE即可;linux项目相关推荐使用sourceinsight(wine/samba)。可以根据个人习惯确定。2.选择好的项目——什么才算

2、宝藏?好的项目:质量过关的项目;个人认为,质量过关的代码应该至少具备:1)软件架构、模块接口设计良好,高内聚、低耦合;2)代码书写规范、流程清晰;3)注释、文档、及相关网络资料齐全;具体到某个项目的优劣可以参考主流论坛对之的评价。除此之外,好的项目,也必须是适合自己的项目。根据自己的水平,兴趣,专业方向等做出选择,更多情况是因为一些限制条件,比如:工作或学习需要。这样做的目的是,让我们能够有目标的去读,一则因为实际需要,易于端正态度、不会轻言放弃;二则于情景中阅读源码,更容易理解,事半功倍。举例说明:要学习asp.net的架构设计、设计

3、模式的相关内容,并且毕业设计想实现一个电子商务网站的,可以阅读一下petshop;如果要学习http协议的具体实现,可以阅读一些webserver的源码,micro_httpd、shttpd、boa、apache……如果学习龙芯或MIPsCPU架构,熟悉mips汇编,建议阅读mips模拟器源码,pcspim、vmips、msim…………3.关注Doc——关于宝藏很多开源项目中的readme、Q&A、buglist、manual等都会提供大量的信息,了解这些文档,显然会对整个项目的把握很大的帮助,然而这部分也是最容易被我们忽略的。我们也可

4、以通过wiki&google扩展这些资料。4.搭建环境——出发前的准备一个可运行的环境对于代码阅读会有很大的帮助:1)便于我们从功能面上了解项目;2)通过调试、跟踪等手段,理解源码运行的流程。5.分析项目架构——画地图通过以上几步已经大体把握了项目的架构,我们再结合源码,即可分析出项目的架构,常用手段如下:1)借助项目目录;2)分析项目管理工具Makefile,分析模块的依赖关系;3)浏览源码,这里不必具体到每个函数,遇到关键函数可以阅读注释即可;4)阅读文档、借助google等做到这里,我们已经对项目的架构应该有了七八分的了解,有些问

5、题即使想不透彻也没关系,留到下面,咱们秋后算账。在继续下一步之前,我们应该动手将项目的架构图画出来,和概要设计时的系统模块图类似,不清楚的地方空出来,可以借助visio、Rose、smartDraw等工具。注:这一步是必须的,因为这是我们寻宝的地图,它可以使我们不至于迷失在茫茫的源码海洋之中。6.深入源码——给我搜根据上一步的地图,我们开始深入到各个模块,逐个歼灭,顺序大体如下:1)自底向上的原则这和我们在软件设计阶段自顶向下,逐步求精的思想相反;对模块内部的分析,我们需要从底部实现着手,结合地图,逐步cover此模块,蚕食之。这也是我

6、们画地图的主要原因。2)公共模块优先公共模块基本上是一些通用性比较强的代码,可复用性比较高,例如一些工具性代码;这些代码的模块接口通常比较清晰,这些代码基本上可以算是金子啦,这里的很多代码、甚至整个模块我们都可以直接用到其他项目中去。我们要将这些代码存入自己的代码库,这样还不行,我们还要加上这些代码的使用说明和可运行的实例代码。3)虚拟数据,模拟接口,让每个模块都可以独立运行。模拟这个概念比较重要,有点孤立敌军的意味。用虚拟数据包围当前模块、切断与其他模块的关系,将模块独立开来,歼灭之。这一步需要的技巧比较多,难度通常和所选的项目有关,

7、这也是前文中我们强调低耦合的原因。关于这些我们可以参考单元测试中的Mock原理,在书写大量伪装数据的同时,我们对模块间接口交互、数据流等有了更深层的了解。这一步我们可以站在软件设计者的角度来思考,此时应该可以写出此模块的详细设计文档。7.总结一个源码项目阅读完了,我们再要回顾整个过程,把开始地图中留下的空填上。我们不能满足于抽取了一些代码,对这个项目甚至类似的项目有了一些了解,这些仅仅是鱼;更重要的是要学会打渔的方法,正所谓:千金在手,不如一技傍身。早期共产党为啥能够在如此艰苦的环境下存活甚至发展壮大,个人认为,主要是源于不断地思考和不

8、断地总结!我们要时常猜测设计者的设计意图:为什么这样做?为什么不那样做?如果是我来设计,我应该怎么实现?应该避免什么,注意什么?这样做真的最好吗?有没有其他更好的实现方法?把这个将这些思路整理出来,可以称之

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。