如何阅读别人的源代码

        网上搜到的一篇介绍阅读别人源代码的方法,放在这里,有空能够查看。java

        阅读别人的代码做为开发人员是一件常常要作的事情。一个是学习新的编程语言的时候经过阅读别人的代码是一个最好的学习方法,另外是积累编程经验。若是你有机会阅读一些操做系统的代码会帮助你理解一些基本的原理。还有就是在你做为一个质量保证人员或一个小领导的时候若是你要作白盒测试的时候没有阅读代码的能力是不能完成相应的任务。最后一个就是若是你中途接手一个项目的时候或给一个项目作售后服务的时候是要有阅读代码的能力的。linux

  收集全部可能收集的材料c++

  阅读代码要作的第一件事情是收集全部和项目相关的资料。好比你要作一个项目的售后服务,那么你首先要搞明白项目作什么用的,那么调研文档、概要设计文档、详细设计文档、测试文档、使用手册都是你要最早搞到手的。若是你是为了学习那么尽可能收集和你的学习有关的资料,好比你想学习linux的文件系统的代码,那最好要找到linux的使用手册、以及文件系统设计的方法、数据结构的说明。(这些资料在书店里均可以找到)。编程

  材料的种类分为几种类型数据结构

  1.基础资料。编程语言

  好比你阅读turbo c2的源代码你要有turbo c2的函数手册,使用手册等专业书籍,msc 6.0或者java 的话不但要有函数手册,还要有类库函数手册。这些资料都是你的基础资料。另外你要有一些关于uml的资料能够做为查询手册也是一个不错的选择函数

  2.和程序相关的专业资料。学习

  每个程序都是和相关行业相关的。好比我阅读过一个关于气象分析方面的代码,由于里边用到了一个复杂的数据转换公式,因此不得不把本身的大学时候课本 找出来来复习一下高等数学的内容。若是你想阅读linux的文件管理的代码,那么找一本讲解linux文件系统的书对你的帮助会很大。测试

  3.相关项目的文档资料spa

  这一部分的资料分为两种,一个相关行业的资料,好比你要阅读一个税务系统的代码那么有一些财务/税务系统的专业资料和国家的相关的法律、法规的资料是 必不可少的。此外就是关于这个项目的需求分析报告、概要设计报告、详细设计报告,使用手册、测试报告等,尽可能多收集对你之后的代码阅读是很重要的

  知识准备

  了解基础知识,不要上来就阅读代码,打好基础能够作到事半功倍的效果

  留备份,构造可运行的环境

  代码拿到手以后的第一件事情是先作备份,最好是刻在一个光盘上,在代码阅读的时候一点不动代码是很困难的一件事情,特别是你要作一些修改性或加强性维护的时候。而一旦作修改就可能发生问题,到时候要恢复是常常发生的事情,若是你不能很好的使用版本控制软件那么先留一个备份是一个最起码的要求了。

  在作完备份以后最好给本身构造一个可运行的环境,固然可能会很麻烦,但可运行代码和不可运行的代码阅读起来难度会差不少的。因此多用一点时间搭建一个环境是很值得的,并且咱们阅读代码主要是为了修改其中的问题或作移植操做。不能运行的代码除了能够学到一些技术之外,用处有限。
  找开始的地方

  作什么事情都要知道从那里开始,读程序也不例外。在c语言里,首先要找到main()函数,而后逐层去阅读,其余的程序不管是vb、delphi都要首先找到程序头,不然你是很难分析清楚程序的层次关系。

  分层次阅读

  在阅读代码的时候不要一头就扎下去,这样每每容易只见树木不见森林,阅读代码比较好的方法有一点象二叉树的广度优先的遍历。在程序主体通常会比较简 单,调用的函数会比较少,根据函数的名字以及层次关系通常能够肯定每个函数的大体用途,将你的理解做为注解写在这些函数的边上。固然很难一次就将所有注 解都写正确,有时候甚至多是你猜想的结果,不过没有关系这些注解在阅读过程是不断修正的,直到你所有理解了代码为止。通常来讲采用逐层阅读的方法能够是 你系统的理解保持在一个正确的方向上。避免一会儿扎入到细节的问题上。在分层次阅读的时候要注意一个问题,就是将系统的函数和开发人员编写代码区分开。在 c, c++,java ,delphi中都有本身的系统函数,不要去阅读这些系统函数,除非你要学习他们的编程方法,不然只会浪费你的时间。将系统函数表示出来,注明它们的做用 便可,区分系统函数和自编函数有几个方法,一个是系统函数的编程风格通常会比较好,而自编的函数的编程风格通常比较会比较差。从变量名、行之间的缩进、注 解等方面通常能够分辨出来,另一个是象ms c6++会在你编程的时候给你生成一大堆文件出来,其中有不少文件是你用不到了,能够根据文件名来区分一下时候是系统函数,最后若是你实在肯定不了,那就 用开发系统的帮助系统去查一下函数名,对一下参数等来肯定便可。

  写注解

  写注解是在阅读代码中最重要的一个步骤,在咱们阅读的源代码通常来讲是咱们不熟悉的系统,阅读别人的代码通常会有几个问题,1搞明白别人的编程思想不 是一件很容易的事情,即便你知道这段程序的思路的时候也是同样。2阅读代码的时候代码量通常会比较大,若是不及时写注解每每会形成读明白了后边忘了前边的 现象。3阅读代码的时候不免会出现理解错误,若是没有及时的写注解很难及时的发现这些错误。4不写注解有时候你发生你很难肯定一个函数你时候阅读过,它的功能是什么,常常会发生重复阅读、理解的现象。

  好了,说一些写注解的基本方法:1猜想的去写,刚开始阅读一个代码的时候,你很难一会儿就肯定全部的函数的功能,不妨采用采用猜想的方法去写注解,根 据函数的名字、位置写一个大体的注解,固然通常会有错误,但你的注解实际是不但调整的,直到最后你理解了所有代码。2按功能去写,别把注解写成语法说明 书,千万别看到fopen就写打开文件,看到fread就写读数据,这样的注解一点用处都没有,而应该写在此处开发参数配置文件(****。dat)读出 系统初始化参数。。。。。,这样才是有用的注解。3在写注解的使用另外要注意的一个问题是分清楚系统自动生成的代码和用户自 己开发的代码,通常来讲没有必要写系统自动生成的代码。象delphi的代码,咱们每每要本身编写一些本身的代码段,还要对一些系统自动生成的代码段进行 修改,这些代码在阅读过程是要写注解的,但有一些没有修改过的自动生成的代码就没有必要写注解了。4在主要代码段要写较为详细的注解。有一些函数或类在程 序中起关键的做用,那么要写比较详细的注解。这样对你理解代码有很大的帮助。5对你理解起来比较困难的地方要写详细的注解,在这些地方每每会有一些编程的技巧。不理解这些编程技巧对你之后的理解或移植会有问题。6写中文注解。若是你的英文足够的好,不用看这条了,但不少的人英文实在不怎么样,那就写中文注解吧,咱们写注解是为了加快本身的理解速度。中文在大多数的时候比英文更适应中国人。与其写一些谁也看不懂的英文注解还不如不写。

  重复阅读

  一次就能够将全部的代码都阅读明白的人是没有的。至少我尚未遇到过。反复的去阅读同一段代码有助于得代码的理解。通常来讲,在第一次阅读代码的时候 你能够跳过不少一时不明白的代码段,只写一些简单的注解,在之后的重复阅读过程用,你对代码的理解会比上一次理解的更深入,这样你能够修改那些注解错误的 地方和上一次没有理解的对方。通常来讲,对代码阅读3,4次基本能够理解代码的含义和做用。

  运行并修改代码

  若是你的代码是可运行的,那么先让它运行起来,用单步跟踪的方法来阅读代码,会提升你的代码速度。代码经过看中间变量了解代码的含义,并且对 之后的修改会提供很大的帮助

  用本身的代码代替原有代码,看效果,但在以前要保留源代码

  600行的一个函数,阅读起来很困难,编程的人不是一个好的习惯。在阅读这个代码的时候将代码进行修改,变成了14个函数。每个大约是40-50 行左右.