读源码
Ⅰ 如何正确的阅读源代码
除了阅读代码以外, 没有更好的方法. 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; 在阅读逻辑和表达式时, 类似地,
Ⅱ 如何读懂源代码
(1)了解对应编程语言的基本语法结构 ;
(2)多看代码;
(3)别光看, 注意分析, 抓住主脉络. 看的同时应该画画程序的流程图, 结构图, 抓住关键变量, 结构体或者类的内容, 理清关键数据的交换关系;
(4)尝试修改. 定义一个新功能, 尝试在源码上修改. 当你尝试更改后, 会更容易在实践中深入的体会源码的思想.
(5) 如果是算法类的源码, 那有必要先去了解算法的基础理论知识.
Ⅲ 如何读源代码
我以前,读代码一般是先看看程序包含哪些头文件,接着作者又定义了哪些宏,声明了哪些全局变量。(注意,除了头文件几乎每个程序都有之外,其他两项不一定都有。)
之后看自定义函数的原型,了解它们各是负责什么工作的(可以猜一猜)。对于具体的实现,先不看。(一般在主函数之后或其他文件里实现)
然后进入主函数,采用“逐行扫描”的阅读方式。直到主函数结束。
最后才去看那些自定义函数的具体实现。
另外,如果程序中还有“类”的话,那我会先去看一看类的接口,就是它能提供哪些操作。具体的实现都是读完主函数之后才看的。
当然这是我的习惯,我想各人有各自的习惯,所以仅供楼主参考,你应该有自己的习惯。
C++程序一般分为几个文件存放。我喜欢先看一看.h头文件里都声明了些什么。特别注意类的接口。然后进入主函数所在的.cpp源文件,从头到尾“逐行扫描”。最后才去看类的接口及自定义函数是如何实现的。
Ⅳ 如何阅读源代码
这样阅读源代码:
1、你会懂的这些代码是什么意思,点击右键
提示:专业人士才能看懂的
Ⅳ 如何读java源码
最好下个编辑器,editplus,gvim之类的,我用的是gvim,当然有myeclipse之类的软件就更好,将代码引进去,然后从主类开始,先看一遍主类,大体知道是干嘛的就好了,然后再细看,从上到下,当看到新类时,再转过去看那个类,看懂了再回主类继续,
Ⅵ 怎样读取源代码
这要用到MFC类库
1.添加头文件 #include <afxinet.h>
2.添加代码
CString strAddress="http://www..com";
CInternetSession mySession(NULL,0);
CHttpFile* myHttpFile=NULL;
CString strsource,strline;
myHttpFile=(CHttpFile*)mySession.OpenURL(strAddress);
while(myHttpFile->ReadString(strline))
{
strsource+=strline;
strsource+="\r\n";
}
myHttpFile->Close();
mySession.Close();
strsource存储的就是html源代码。
Ⅶ 如何阅读源码包
在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
Ⅷ 为什么以及如何阅读源码
对于这些问题,说到底主要是因为经验不够,而经验主要从项目实践中积累,所以招聘单位一般都会限定工作时间大于 3 年,因为这些人的项目经验相对较丰富,项目中遇到的场景相对较多。
工作经验的积累来自于年限与实践,然而看源码可以扩展我们的思路,这是变相增加我们经验的不错方法。虽然不能短时间内通过时间积累经验,但是可以通过学习开源框架、开源项目来获取。
另外进职场后一般都要先熟悉现有系统,如果有文档还好,没文档的话就得自己去翻代码研究。如果大家之前对阅读源码有经验,那么在研究新系统的代码逻辑时就不会那么费劲了。
Ⅸ 怎样提高阅读源代码的效率
1、一边阅读代码一边写注释。这是我用过的最好的方法,对代码理解得更深入,看一些重要代码或者特别难懂的代码时挺有用。更何况,注释也是一种文档嘛。
2、一边阅读代码一边绘制UML。这个方法适用于类之间的关系较复杂和调用层次较深的情况,我一般都是先绘制顺序图,然后为顺序图中的类绘制关系图。
3、通过Debug来跟踪程序的主要执行过程,这样就可以分清主次了,阅读的时候更有针对性。
4、类的快速阅读。先弄清楚它在继承链中的位置,看看它的内部状态,也就是成员变量,一般来说,类的对外接口都是对成员变量的访问、加工、代理等,然后看看它的对外接口,也就是公有成员函数,识别核心的一个或多个函数,这时候你应该可以大概了解这个类的职责或作用了。可能这个类是某个设计模式中的一个组成部分,所以,设计模式的掌握对代码的快速阅读也是很有帮助的。
5、带着问题去阅读。比如想了解android中的消息机制,那么看看Looper、Handler、MessegeQueue这几个类就可以了,其他的不要去看,要不然就跑题了。
Ⅹ 如何读项目代码
(再没有文档这个总是有的吧?哪怕是个代号) 2.这个项目的性质 3.源代码的规模 有多少行(其中有多少行是注释),总共有多少个文件(每一类文件分别有多少个,每个文件是多少行) 如果是面向对象的,有多少个class,如果是面向过程的有多少个function 4.功能的详细整理功能列表函数名 功能 功能描述 5.功能模块之间的关系 (哪怕没有注释,按名称,调用关系一定能整理清楚) 如果你把我上面列的5点搞清楚了,再来抱怨,我想应该是下面这个样子: 老大给了我一个项目源码让我看,注释都没有,是一个超级留言本,总共有10万行代码,就两个文件,函数不到10个,功能就是注册和留言,连修改删除功能都没有,大家说我看这样的代码有意思吗?我是不是还要待在这里?如果你完成了我上面说的5步,你仍然觉得没什么值得学的,没有什么需要做的,说明你不适合干编程这一行。下边呢就具体的介绍一下心得。当我们学习程序编码时,首先会看一些程序代码例子,然后学例子去修改编写代码;当我们刚进入一个公司,公司会把要维护修改的项目分给我们,让我们修改维护,要想修改编写,首先要读懂项目主要程序;当我们去看一些优秀的开源项目,想从中学习这些项目的设计思想时,我们也要去看项目代码…如此等等,可以说读代码是为了写代码,写出非常优秀的代码。因此对于程序开发人员来说,快速阅读项目代码是一个必需要掌握的能力。前段时间,我接手了一个php做的系统,公司要求我参阅这个项目重新做一个Demo,在读这个系统代码时,我积累了一些关于读项目代码的心得体会,主要内容如下。 清楚主要功能 想一想如何实现 首先要清楚项目的主要功能,知道它主要是干什么用的,才可能从总体上去把握项目。可以通过向公司同事或其他人请教、或查阅项目需求分析文档,概要设计文档来快速获得项目主要功能,如果没有这些文档,可以在网上搜索项目的功能,如果以上这些都没有条件的话,那只有把此项目运行起来,通过自己的实际操作来得到项目的主要功能了。清楚项目主要功能后,自己首先想一想,如果让我做,该如果去实现呢,这样能够得到对自己来说的技术难点,读源代码时会更留意这些内容,效率也就提高上去了。 运行项目 找到实现主要功能的代码 清楚主要功能以后,就可以去读实现主要功能的代码了,当然还需要找到这些功能是在那些文件,那些类来实现的。为了找到实现类,我们还要把项目运行起来,依据项目类型及特点,通过不同方法找到实现类代码。把这些文件记录下来,随后只需重点看这些文件中的代码,就可以了。 依据代码的类层次关系 了解项目体系结构 通过其他一些工具把这些代码的类图导出来,比如(rational rose或powerdesigner的逆向工程),如果是Java项目还可以导出Javadoc。依据导出的内容,了解每一个主要实现类的大致功能,及这些类之间相互关系,这样也就清楚了项目的类层次结构,即项目体系结构。 清楚项目主要实现技术 依据导出的类图和对项目了解的疑点,如果是技术方面,比如自己不知道或不清楚该怎么实现某种功能,那就赶紧参照源代码,找到项目主要实现技术。如果对此技术不熟悉,那就快快在Bai或Google上面搜索一把,ok,一定会很多关于此技术的资料等着你去看呢,抓紧阅读这些资料,尽快掌握此技术的内容。 调试主要实现类,从中了解实现细节 了解了项目的体系结构,并清除项目主要实现技术后,下一步就是看实现细节了。看实现细节,也是从整体到局部,从看各个方法声明出发,在逐步看每个方法体。当然没有必要每个方法都要去一行一行看,只需重点看与实现此类主要功能的核心方法。对某些代码看过一两编后,还是很迷茫的话,没有关系,调试一把,看看它终究是有何作用。调试有很多中,最终要的是一步一步跟踪,但是有些语言编写的代码很难用这种方式做,比如(javascript或applet),那就把一些重要的变量输出出来。了解了主要功能代码的主要方法后,可以基本上说我们已经看懂了项目的代码,把握了项目的整体架构。 修改代码来满足自己需求 看懂了项目代码,最后一步就是根据需要,来修改项目代码,满目我们的需要了。以上就是我在看项目代码中的总结,当然,如果项目非常功能很少,没有使用什么复杂技术的话,了解体系结构和清楚项目主要实现技术就可以跳过了,根据实际,直接需要去看源代码就可以了。