您的位置:首页 > 编程语言

如何更有效地学习开源项目的代码

2015-08-27 13:02 519 查看
导读:对于开发者来说,社区里丰富的开源代码其实是笔极为宝贵的财富。如果能充分利用好开放源代码的资源,不仅可以掌握多种编程方法,提高实践能力,还能获得好的思想,激发编程灵感。开源代码怎么学以及怎样才能学好是大家经常关注的话题,日前,在问答网站知乎上,有人抛出了“如何更有效地学习开源项目的代码?”的话题,众技术好手各抒己见,CSDN软件研发频道对本文内容进行了整理,方便大家学习与参考。
盛大创新研究院研究员 庄表伟:学习开源 尽可能在代码里找答案

庄表伟提供了以下9个建议:
1.在下载源代码之后,首先要跑起来,编译通过、正常运行;
2.在你觉得最有可能运行到的地方,设置断点或者抛出异常,这样,就能够找到一个项目在正常运行时的入口点;
3.从入口点所在的那个源文件开始阅读,逐步把握整个项目是如何启动起来;
4.随便改点代码,看看会不会报错,如果报错,会从哪里报错;
5.试着把报错屏蔽、修复、或者绕开;
6.尝试理解一个系统的内部结构,多少组成部分,主线模块是哪些?辅助模块是哪些?
7.从实际需要出发,修改这个项目,满足自己的某一个小的需求。(注意在此之前,尽量不要在网络上找答案);
8.看看相关的讨论与心得,是否与自己的理解相一致;
9.提交bug fix或者某个新的功能代码。

在学习开源的过程中,有几个方面会获得大量收获,
1.架构与模式;
2.开源社区常见的一些惯用法;
3.相关领域的结构与算法。
总结一点:学习开源,尽可能在代码里找答案,而不是在代码之外找答案,那些都是二手的,而且很可能不准确。

互联网评论员 朱晓阳:从简单做起 理论联系实践
朱晓阳对此发表了两点看法:首先,从简单做起。刚开始的时候学习一些领域内基础理论,然后找一些简单的东西去实现,不能一开始就去找开源项目。建议大家经常动手写一些小程序,如改进宿舍网络登录客户端等。积小成多,能显著提高自己的编程能力。其次,学习的知识一定要和自己生活或工作有联系,这样才会有乐趣或动力。

互联网评论员孙竟:先构想一个想做的项目
首先,构想一个想做的项目(比如论坛、博客、微博等);然后,思考需要什么功能,应该怎么去实现,尽可能包括各种细节,有必要时记录下来;最后,去找个类似的开源应用,看看它是怎么实现的,和你的想法有什么差异,有什么可以学习或需要改进的地方。

互联网草根hqman:我的5个建议:
1.反复地使用软件,熟释软件的组成文件和软件功能,注意IE地址栏内的地址变化;
2.打开数据库文件或存放数据的XML文件,参照数据字典了解各个表和字段的数据含意;如果没有数据字典,就运行软件输入数据,参照所输入的数据,了解各个表和字段的数据含义;
3.利用Visio进行反向工程,将类图抽出来;
4.研究类之间的关系,注释各个类的属性和方法,弄清程序的整体框架;
5.另开一个项目,按照软件开发的流程,将代码分段复制进新的项目,进行编译调试,关注一些实现细节,学习一些编程的技巧。

在读研究生张伟:在校学生空闲时间多参加一下比赛
张伟的建议是大家在空闲时间多参加一些比赛。一个完整的项目,不管再小,只要做完了,就会有收获。多看一些比较大的开源项目源代码,每次看完后都会受益匪浅。从网上成熟的开源代码里,可以学到很多的设计思想。他认为,从项目入手,以项目为驱动,可激励自己进步。当然,是否一定需要看开源代码,这将取决于个人的兴趣和需要。

画出程序流程图 理解程序流程思想

CSDN博客专家i_like_cpp:曾在CSDN分享了《如何将源代码学好》的博文,对此,他给出了四点建议:
1. 画出整个程序的流程图,理解整个程序流程的思想。画流程图的方式更让人很直接的理解程序的整体流程,而不会被代码所干扰,让程序员总体上把握整个程序;
2. 对流程各节点(函数或过程)的理解,流程的每一节点是构成整个流程的不可缺少的部份;
3. 再把流程和流程各节点串起来理解整个程序,可能的话最好写出读书笔记;
4. 如果想深刻的学习到源代码的精髓所在,请写一个相近的程序进行操练。理解了这个程序并不表明掌握了这个程序,只有在操练一个相近的程序时,才知道你到底理解了多少,掌握了多少。

其实源代码的学习这是一个从整体到不断细化的过程,是一个极为繁琐的过程同时也是一个不断认清事物本原的过程。
很多程序员(包括我自己)在相当长的时间内,过份注重程序代码的细节部份,而忽略了程序的有机整体,这不能不说是一种悲哀。
特别是软件大工业时代的现在,由于项目的庞大,整个项目被人为的分割成七零八落的几个独立小块 (这就更须要有人对整个项目的统领),程序员在这几个小块中各自为战,堕落自己的思维,限制在狭小的空间中还自得其乐。整个一井底之蛙。
但是我们也要看到,现在有越来越多的程序员潜意识里明白了这个缺陷,正在不断的改进。
其实我真正想说的是,大凡世事纷繁复杂,但道理却殊途同归,这才是万法归一的理解。

编后语:
源代码的学习是一个从整体到不断细化的过程,是一个极为繁琐的过程同时也是一个不断认清事物本源的过程。本文总结的源代码的学习经验,希望对您有所帮助
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: