编程人员阅读代码的一些小技巧分享_相关技巧

代码阅读的必要性
阅读别人的代码作为研发人员是一件经常要做的事情。一个是学习新的编程语言的时候通过阅读别人的代码是个最佳的学习方法,另外是积累编程经验。如果你有机 会阅读一些操作系统的代码会帮助你理解一些基本的原理。更有就是在你作为一个质量确保人员或一个小领导的时候如果你要做白盒测试的时候没有阅读代码的能力 是不能完成相应的任务。最后一个就是如果你中途接手一个项目的时候或给一个项目做售后服务的时候是要有阅读代码的能力的。
收集所有可能收集的材料
阅读代码要做的第一件事情是收集所有和项目相关的资料。比如你要做一个项目的售后服务,那么你首先要搞明白项目做什么用的,那么调研文件、概要设计文 件、周详设计文件、测试文件、使用手册都是你要最先搞到手的。如果你是为了学习那么尽量收集和你的学习有关的资料,比如你想学习linux的文件系统的代 码,那最佳要找到linux的使用手册、及文件系统设计的方法、数据结构的说明。(这些资料在书店里都能找到)。
  材料的种类分为几种类型
1.基础资料。
比如你阅读turbo c2的原始码你要有turbo c2的函数手册,使用手册等专业书籍,msc 6.0或java 的话不仅要有函数手册,还要有类库函数手册。这些资料都是你的基础资料。另外你要有一些关于uml的资料能作为查询手册也是个不错的选择
2.和程式相关的专业资料。
每一个程式都是和相关行业相关的。比如我阅读过一个关于气象分析方面的代码,因为里边用到了一个复杂的数据转换公式,所以不得不把自己的大学时候课本 找出来来复习一下高等数学的内容。如果你想阅读linux的文件管理的代码,那么找一本讲解linux文件系统的书对你的帮助会非常大。
3.相关项目的文件资料
这一部分的资料分为两种,一个相关行业的资料,比如你要阅读一个税务系统的代码那么有一些财务/税务系统的专业资料和国家的相关的法律、法规的资料是 必不可少的。此外就是关于这个项目的需求分析报告、概要设计报告、周详设计报告,使用手册、测试报告等,尽量多收集对你以后的代码阅读是非常重要的

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

留备份,构造可运行的环境
代码拿到手之后的第一件事情是先做备份,最佳是刻在一个光盘上,在代码阅读的时候一点不动代码是非常困难的一件事情,特别是你要做一些修改性或增强性 维护的时候。而一旦做修改就可能发生问题,到时候要恢复是经常发生的事情,如果你不能非常好的使用版本控制软件那么先留一个备份是个最起码的需求了。
在做完备份之后最佳给自己构造一个可运行的环境,当然可能会非常麻烦,但可运行代码和不可运行的代码阅读起来难度会差非常多的。所以多用一点时间搭建 一个环境是非常值得的,而且我们阅读代码主要是为了修改其中的问题或做移植操作。不能运行的代码除了能学到一些技术以外,用处有限。

找开始的地方
做什么事情都要知道从那里开始,读程式也不例外。在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 行左右。

时间: 2024-10-27 22:09:35

编程人员阅读代码的一些小技巧分享_相关技巧的相关文章

提高代码可读性的十大注释技巧分享_相关技巧

本文讲述了提高代码可读性的十大注释技巧.分享给大家供大家参考,具体如下: 很多程序员在写代码的时候往往都不注意代码的可读性,让别人在阅读代码时花费更多的时间.其实,只要程序员在写代码的时候,注意为代码加注释,并以合理的格式为代码加注释,这样就方便别人查看代码,也方便自己以后查看了.下面分享十个加注释的技巧: 1. 逐层注释 为每个代码块添加注释,并在每一层使用统一的注释方法和风格.例如: 针对每个类:包括摘要信息.作者信息.以及最近修改日期等: 针对每个方法:包括用途.功能.参数和返回值等. 在

程序员编程从初级到中级的10个秘诀_相关技巧

这个观点很好,有关程序员如何从初级跃升到中级的信息极少.以下是为了实现这种转变需要你去做的10件事. 1.学习另一门语言 其实你学的是哪一门语言并没有关系,但是学习另一门语言(不管你已经了解多少种语言)将把你打造为更好的程序员.能学会一门与你日常使用的语言风格迥异的语言则更佳.打个比方,如果你是C#程序员,学习VB.NET或者Java对你的帮助就没有学习Ruby或者Groovy大. 我说"学另一门语言"的意思是要真正学会它.学习一门语言包括三个领域的知识:语法.内置操作符和库,以及&q

五个最佳编程文本编辑器分享_相关技巧

很多场合下我们会用到纯文本编辑器,Windows自带的记事本功能很简陋,因此我们从网友的投票提名中选取了前五个最佳的文本编辑器(实际上有六个).这些编辑器实际上主要适合程序员使用,他们的清单如下. Notepad++ (Windows) 优于Windows记事本的一个文本编辑器,完全免费且开源,对于不同的编程语言可以实现语法高亮,代码折叠以及宏,起可定制性非常强. Emacs (所有平台) Emacs文本编辑器深受高级程序员的喜爱,具有内置的宏功能以及强大的键盘命令,这对于编辑代码来说真是一种享

Web开发人员常用速查手册 英文集合推荐_相关技巧

为了方便各位朋友,本文收集了一些对Web开发人员非常有用的手册,记得推荐一下哦. HTML 速查手册 HTML/XTML in one page HTML5: The Evolution of Web Standards by James Sugrue (X)HTML Elements and Attributes Doctype Declarations (DTDs) XHTML Character Entity Reference GoSquared HTML Help Sheet   CS

IIS 301重定向与程序代码实现301重定向的差别_相关技巧

先说一下IIS 301重定向的做法: IIS中301重定向 打开"Internet信息服务",右击你要跳转的文件夹或者文件,在弹出的右键菜单中选择"属性"弹出的对话框中,"目录"选项下找到"连接到资源是的内容来源",选择"重定向到URL",在下面的文本框中输入要跳转到的页面同时,将"客户端将定向到" 下面的复选框 "资源的永久重定向"选上 点击"应用&quo

快速解决eclipse中注释的代码依然会执行的问题_相关技巧

问题: eclipse中注释的代码在debug的时候居然还能执行.那一刻内心是崩溃的.. 解决方案: 项目重编译显示都正常,并没有报错,然后发现项目编译后,WEB-INF/lib/classes中的class文件并没有更新,这就好理解了,项目其实没有编译成功.然后又发现项目图标上有个感叹号.是因为在 项目右键→Properties→Libraries 中有部分jar不正确,导致项目不能编译自动生成classes. 加载一下jar项目就正常了. over..

30个提高Web程序执行效率的好经验分享_相关技巧

尽量避免使用DOM.当需要反复使用DOM时,先把对DOM的引用存到JavaScript本地变量里再使用.使用设置innerHTML的方法来替换document.createElement/appendChild()方 法. eval()有问题,new Fuction()构造函数也是,尽量避免使用它们. 拒绝使用with语句. 它会导致当你引用这个变量时去额外的搜索这样的一个命名空间,with里的代码在编译时期是完全未知的. 使用for()循环替代for-in循 环.因为for-in循环在开始循环

一些.NET对多线程异常处理技巧分享_实用技巧

多线程环境 在我们的产品 SE 中,出现多线程的地方主要有两大类,一类是通过 ThreadPool 或 new Thread 主动发起多线程,另一类是 Socket 通讯回调. 多线程异常捕获 对于一般的异常处理来说,我们只要简单的将可能出错的语句包含在 try/catch 语句中即可.我也曾经简单的将该方法运用于多线程的异常捕获,结果并非如此,代码如下: 复制代码 代码如下: public static void Main() {     try     {         new Threa

关于base64编码的原理及实现方法分享_相关技巧

一.Base64编码原理 步骤1:将所有字符转化为ASCII码:步骤2:将ASCII码转化为8位二进制:步骤3:将二进制3个归成一组(不足3个在后边补0)共24位,再拆分成4组,每组6位:步骤4:统一在6位二进制前补两个0凑足8位:步骤5:将补0后的二进制转为十进制:步骤6:从Base64编码表获取十进制对应的Base64编码: 说明:不足3个补0的最终Base64编码为=,而不是A! 二.Base64编码示例 示例一:zyq对应Base64编码为enlx 示例二:mzwu对应Base64编码为