zoukankan      html  css  js  c++  java
  • 如何更有效地学习开源项目的代码

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

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


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

  • 相关阅读:
    bzoj 1030 [JSOI2007]文本生成器
    Swift 学习笔记 (闭包)
    Swift 学习笔记 (函数)
    HTML 学习笔记 JQueryUI(Interactions,Widgets)
    HTML 学习笔记 JQuery(表单,表格 操作)
    HTML 学习笔记 JQuery(animation)
    HTML 学习笔记 JQuery(盒子操作)
    HTML 学习笔记 JQuery(事件)
    HTML 学习笔记 JQuery(DOM 操作3)
    HTML 学习笔记 JQuery(DOM 操作2)
  • 原文地址:https://www.cnblogs.com/sun-frederick/p/4762977.html
Copyright © 2011-2022 走看看