当前位置:首页 » 操作系统 » 阅读开源码

阅读开源码

发布时间: 2022-07-10 23:43:27

Ⅰ 如何阅读程序源代码

阅读源代码的第一个工具,就是你手中的code base。把它编译出来,运行它,加log,试着修改一些数据和代码,看看有什么变化。

第二个重要的工具就是debugger,而debugger最重要的功能是获取call stack。在你感兴趣的use case里pause一下,在你不知道有什么用的函数里加个断点,显示出来的call stack都能让你对系统有更清晰的认识。

一个软件系统就是一个小宇宙。别期待有什么高明的文档。要把自己当成探求自然真理的物理学家。

必须找好切入点。你要解决什么问题。是要fix bug;还是要把这个系统和其它模块集成;还是要增加新功能。物理学家没有上来就研究整个宇宙的,必须选好分支。
如果你有一个猜想,但是又和你的目标关联不太大,那就坚持这个猜想,直到出现明显反例。物理学有很多这样的例子,和数学不同,为了旁支猜想投入过多研究是不明智的。
如果有明显证据证明你的某个旁支猜想大错特错,你就要放弃主要目标,暂时把解决旁支猜想作为主要目标。比如,你本来以为某个结构是LRU的cache,结果发现怎么做都不对,那就先放弃原来的目标,专门研究这个结构的用途。
对于旁支猜想的不断切换,要做好自己的task stack保留。在旁支猜想解决之后,要根据结论尽快回到上次中断的任务。

复杂的软件系统更像一个动物,待久了你会了解它的脾性。有些是通过逻辑,有些是通过感觉。玩车的尚且有这种感觉,我们玩的东西比车复杂上万倍,就更不能对它缺乏感情投入。(这也是我不爱做企业开发的原因,我不爱养个爬行类当宠物,还是猫猫狗狗的亲切。)

Ⅱ 关于阅读开源项目的源码,有哪些经验值得分享

阅读源代码的过程中,最重要的一点是反复地重复。ttserver来源只是解读台词时,我将不熟悉C,有很多奇怪的代码ttserver习惯,所以硬着头皮vim线看它一遍又一遍,有些不明白的地方,看到十几次,真正理解,可能被视为量变引起质变。

所以我一直认为,写一篇文章,你可以毫无问题地阅读和理解,这是一个好主意。

Ⅲ 为什么以及如何阅读源码

对于这些问题,说到底主要是因为经验不够,而经验主要从项目实践中积累,所以招聘单位一般都会限定工作时间大于 3 年,因为这些人的项目经验相对较丰富,项目中遇到的场景相对较多。
工作经验的积累来自于年限与实践,然而看源码可以扩展我们的思路,这是变相增加我们经验的不错方法。虽然不能短时间内通过时间积累经验,但是可以通过学习开源框架、开源项目来获取。
另外进职场后一般都要先熟悉现有系统,如果有文档还好,没文档的话就得自己去翻代码研究。如果大家之前对阅读源码有经验,那么在研究新系统的代码逻辑时就不会那么费劲了。

Ⅳ 如何去阅读并学习一些优秀的开源框架的源码

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

Ⅳ 如何阅读源码包

在Eclipse查看开发包jar源码的方法如下:
1.选择项目,右键中单击【Properties】
2.【java Build Path】-【Configure Build Path】-【Libraries】,在下面找到如:Guava-r09.jar包,展开它,选择【Source attachment】,单击右边的【Edit…】按钮。
3.在打开的窗口中,可选择文件(jar\zip),目录或工作空间中的jar文件,在这里我选择External Folder…,选择如E:/java project/guava即可。

4.连续单击【OK】两次回到Eclipse工作平台即可。

有源码,把它加到eclipse中:

方法1:直接用压缩软件打开相应的jar包,然后把源码拖进去压缩一下,最后选中工程刷新一下ok。

方法2:右击referenced

Ⅵ 如何阅读源代码

一个大项目的源代码,不要过份详细的阅读。大项目,其代码量基本上是可以吓死人的。过份的关注细节,常常会拘泥于细节,而忽略了整体框架。当你能够看清框架的时候,亦花费了太多的时间。
因此,阅读一个大项目的源代码,其目的不在于欣赏代码细节,而在于迅速看清项目整体框架的大概面貌:都有那些模块,这些模块是干嘛的(不关心具体怎么干),模块之间的通讯机制大概是怎样的,然后在考虑子模块,通常只要掌握两级子模块就够了。花上1,2天的时间掌握这一切,就达到了阅读大项目源码的目的。因为一旦你掌握了框架,你就可以按照这个框架实现这个项目,虽然和原项目全然不同,但是完成的需求却是一样的。
在软件中,架构才是本质。
也许你指望详细阅读大项目源代码能看到高质量的代码,但是,大项目通常都是团队的劳动成果,每个人的不同水平造就了代码质量的高高低低,一个人在不同时间不同环境的代码质量也是不同的。要指望在大片源码面前找到高质量,简直是天方夜谭。
也许你要从阅读源码中掌握某项技术细节,比如bsp,又或者换装,那么,最好的建议是查找相关的技术文档以及文档上所附带的sample code,这种sample code一般不会附带任何干扰,简洁得只是为了证明该技术而存在的。如果没有这些东西,而只能从大项目源码中找的话,你提前先了解了框架,能更快的查找和定位到表达该技术的文件。但是通常都会比较不幸,因为你为了明白这一技术,通常要先理解混入其中的另一技术。
最后谈谈怎样才能阅读到高质量的源代码。何谓高质量?是指算法出人一表(比如某种o(1)的排序法)?还是采用了极端深奥的语言特性将某实现完美表达(比如模板的灵活运用)?无论是哪种,最好的来源是书,如《STL详解》,或者《inside XX》这样的东西。书的作者通常就是这些高质量代码的作者,他会带领你探索这些源码背后的真相。

Ⅶ 如何正确的阅读源代码

除了阅读代码以外, 没有更好的方法. 7.在寻找bug时, 请从问题的表现形式到问题的根源来分析代码. 不要沿着不相关的路径(误入歧途). 8.我们要充分利用调试器|编译器给出的警告或输出的符号代码|系统调用跟踪器|数据库结构化查询语言的日志机制|包转储工具和Windows的消息侦查程序,
定出的bug的位置. 9.对于那些大型且组织良好的系统, 您只需要最低限度地了解它的全部功能, 就能够对它做出修改. 10.当向系统中增加新功能时, 首先的任务就是找到实现类似特性的代码, 将它作为待实现功能的模板. 11.从特性的功能描述到代码的实现, 可以按照字符串消息, 或使用关键词来搜索代码. 12.在移植代码或修改接口时, 您可以通过编译器直接定位出问题涉及的范围, 从而减少代码阅读的工作量. 13.进行重构时, 您从一个能够正常工作的系统开始做起, 希望确保结束时系统能够正常工作. 一套恰当的测试用例(test
case)可以帮助您满足此项约束. 14.阅读代码寻找重构机会时, 先从系统的构架开始, 然后逐步细化, 能够获得最大的效益. 15.代码的可重用性是一个很诱人, 但难以理解与分离, 可以试着寻找粒度更大一些的包, 甚至其他代码. 16.在复查软件系统时, 要注意, 系统是由很多部分组成的, 不仅仅只是执行语句. 还要注意分析以下内容:
文件和目录结构|生成和配置过程|用户界面和系统的文档. 18.可以将软件复查作为一个学习|讲授|援之以手和接受帮助的机会. ++++++++++++++++++++ 第二章: 基本编程元素 ++++++++++++++++++++ 19.第一次分析一个程序时, main是一个好的起始点. 20.层叠if-else if-…-else序列可以看作是由互斥选择项组成的选择结构. 21.有时, 要想了解程序在某一方面的功能, 运行它可能比阅读源代码更为恰当. 22.在分析重要的程序时, 最好首先识别出重要的组成部分. 23.了解局部的命名约定, 利用它们来猜测变量和函数的功能用途. 24.当基于猜测修改代码时, 您应该设计能够验证最初假设的过程. 这个过程可能包括用编译器进行检查|引入断言|或者执行适当的测试用例. 25.理解了代码的某一部分, 可能帮助你理解余下的代码. 26.解决困难的代码要从容易的部分入手. 27.要养成遇到库元素就去阅读相关文档的习惯; 这将会增强您阅读和编写代码的能力. 28.代码阅读有许多可选择的策略: 自底向上和自顶向下的分析|应用试探法和检查注释和外部文档, 应该依据问题的需要尝试所有这些方法. 29.for (i=0; i 30.涉及两项不等测试(其中一项包括相等条件)的比较表达式可以看作是区间成员测试. 31.我们经常可以将表达式应用在样本数据上, 借以了解它的含义. 32.使用De Morgan法则简化复杂的逻辑表达式. 33.在阅读逻辑乘表达式时, 问题可以认为正在分析的表达式以左的表达式均为true; 在阅读逻辑和表达式时, 类似地,

Ⅷ 大家第一个阅读的开源代码是什么

我们知道,很多作家出名不容易,很多作家成名之前都阅读过大量的优秀文学作品,经过长期的阅读和写作积累,慢慢的沉淀,日积月累我,慢慢的才有可能写出一些优秀的作品。 作为程序员与此类似,很多程序员也需要不断积累,不断学习,而且需要阅读大量的优秀程序或产品,经过不断阅读和实践积累,或是通过其他能够让自己在这条道路成长的各种途径不断磨练,重现,重组学习,不断超越,然后可能写出好的程序或产品。


好的代码应该是实用的、高效的和稳定的。最重要的是,最好的选择必须符合要求,让读者感到非常舒服,并能在第一时间找到他们想看的东西!!

3.我对读的建议就是:代码只读最优秀的。不优秀的代码,要么原样使用,要么小修小补使用,要么干脆重写。

总之,我觉得阅读代码,要读就读laravel这样的。什么时候读、怎么读呢?最好是逼到有什么非读不可的需求的时候再读,读的时候一切以完成需求为目标,效率杠杠的。

热点内容
crv哪个配置性价比高2021 发布:2024-09-17 04:07:51 浏览:35
wincc图形编译在哪里 发布:2024-09-17 03:58:26 浏览:977
androidubuntu 发布:2024-09-17 03:50:27 浏览:701
识梦源码 发布:2024-09-17 03:50:18 浏览:26
诺基亚密码忘了打什么电话 发布:2024-09-17 03:27:09 浏览:555
树深度优先算法 发布:2024-09-17 03:26:58 浏览:472
跳转页源码 发布:2024-09-17 03:13:05 浏览:543
html文件上传表单 发布:2024-09-17 03:08:02 浏览:785
聊天软件编程 发布:2024-09-17 03:00:07 浏览:726
linuxoracle安装路径 发布:2024-09-17 01:57:29 浏览:688