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

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

 

导读:对于开发者来说,社区里丰富的开源代码其实是笔极为宝贵的财富。如果能充分利用好开放源代码的资源,不仅可以掌握多种编程方法,提高实践能力,还能获得好的思想,激发编程灵感。开源代码怎么学以及怎样才能学好是大家经常关注的话题,日前,在问答网站知乎上,有人抛出了“如何更有效地学习开源项目的代码?”的话题,众技术好手各抒己见,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. 如果想深刻的学习到源代码的精髓所在,请写一个相近的程序进行操练。理解了这个程序并不表明掌握了这个程序,只有在操练一个相近的程序时,才知道你到底理解了多少,掌握了多少。

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


编后语:
源代码的学习是一个从整体到不断细化的过程,是一个极为繁琐的过程同时也是一个不断认清事物本源的过程。本文总结的源代码的学习经验,希望对您有所帮助

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VR(Virtual Reality)即虚拟现实,是一种可以创建和体验虚拟世界的计算机技术。它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中。VR技术通过模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。 VR技术具有以下主要特点: 沉浸感:用户感到作为主角存在于模拟环境中的真实程度。理想的模拟环境应该使用户难以分辨真假,使用户全身心地投入到计算机创建的三维虚拟环境中,该环境中的一切看上去是真的,听上去是真的,动起来是真的,甚至闻起来、尝起来等一切感觉都是真的,如同在现实世界中的感觉一样。 交互性:用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性)。例如,用户可以用手去直接抓取模拟环境中虚拟的物体,这时手有握着东西的感觉,并可以感觉物体的重量,视野中被抓的物体也能立刻随着手的移动而移动。 构想性:也称想象性,指用户沉浸在多维信息空间中,依靠自己的感知和认知能力获取知识,发挥主观能动性,寻求解答,形成新的概念。此概念不仅是指观念上或语言上的创意,而且可以是指对某些客观存在事物的创造性设想和安排。 VR技术可以应用于各个领域,如游戏、娱乐、教育、医疗、军事、房地产、工业仿真等。随着VR技术的不断发展,它正在改变人们的生活和工作方式,为人们带来全新的体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值