如何通过阅读别人的代码提高自己的编程能力

代码阅读的必要性

阅读别人的代码作为研发人员是一件经常要做的事情。一个是学习新的编程语言的时候通过阅读别人的代码是个最佳的学习方法,另外是积累编程经验。如果你有机

会阅读一些操作系统的代码会帮助你理解一些基本的原理。更有就是在你作为一个质量确保人员或一个小领导的时候如果你要做白盒测试的时候没有阅读代码的能力
是不能完成相应的任务。最后一个就是如果你中途接手一个项目的时候或给一个项目做售后服务的时候是要有阅读代码的能力的。

收集所有可能收集的材料

读代码要做的第一件事情是收集所有和项目相关的资料。比如你要做一个项目的售后服务,那么你首先要搞明白项目做什么用的,那么调研文件、概要设计文
件、周详设计文件、测试文件、使用手册都是你要最先搞到手的。如果你是为了学习那么尽量收集和你的学习有关的资料,比如你想学习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-12-10 23:45:00

如何通过阅读别人的代码提高自己的编程能力的相关文章

如何阅读别人的代码

############################################## """ 阅读什么样的代码? 很难明确的说应该阅读什么样的代码,只能说有一些基本的原则: 1,阅读那些你用得着的代码 这一步最好从阅读那些你已经在使用的插件或者库文件开始. 这些都是你可以学习的非常好的例子.你已熟悉了它们的公共API,了解它们内部工作原理的障碍是较低的.此外,作为代码的用户,你有机会添加文档.实现新的功能,或者通常以某种方式给项目做贡献. 2,阅读那些你印象深刻的代码

如何阅读修改别人的代码?

如何阅读别人的代码? 读代码的时间总是比写代码的时间更长 维护升级老代码或者同事突然离职交接, 读代码是必不可少的过程. 不夸张的说,可能没有人觉的读代码比写代码轻松. 但这又是工作中不得不面对的场景. 如果已有代码可以运行,那便跑起来看看 看看需求,知道这段代码干了什么事情,如果能够理解业务就更好了 看看数据库表结构.结合需求 一定会有数据,运行时候的数据对比数据库的数据更容易理解逻辑 看看已有的设计文档.更业务逻辑对应 根据功能分类一个一个的读代码吧 如何在已有基础上进行再次开发? 再次开发

如何提高编程能力?写更多代码是最显著的方法,但是本文这一种与写代码完全相反,一起来看看吧

起初我是在2010年5月为Fuel Your Coding网站写的这篇文章.然后这个网站现在已经不存在了,为了让爱好编程的人们能够继续受益,所以在这里重新发表这篇文章.我考虑过是否要按照现如今的情况来对这篇文章进行修改,但是我认为它已经足够经得住检验了.只有少许的部分可能不尽人意.尽情的欣赏这篇文章吧. 正如每个人都知道的那样,写更多的代码是提高编程能力最显著方法.但是我所确信的另外一种可以提高编程能力的方法是与写代码完全相反的.我将要尽可能清楚的陈述这种方法. 只有大量的阅读别人的代码才能显著

程序员提高编程能力万无一失的办法

那就是去读别人写的代码.读那些你常用的库.编程框架的源代码,读那些你景仰的大牛的源代码,读代码里的测试(测试本身就是一种有效的文档):读代码.改代码.运行代码. 其实,所谓写程序,大部分的时间都是花在读代码上,“写”的部分耗时极少:所以把“读”的技能训练好了,是很有好处的. 提高编程能力万无一失的办法 编注:这篇文章最初于 2010 年 5 月为 Fuel Your Coding 网站而写.不幸的是,那个网站已经不复存在了,所以我将这篇文章重新发布.为了紧跟时代步伐,我想过对其进行更新,但我又觉

程序员如何快速提高编程能力?快来看大牛的方法(转)

如果你想提高编码的能力,最容易想到的一个方法就是多敲代码.每个人都知道这点.然而,另外一种我认为绝对也能提高的方法: 阅读别人的代码能让你的编码能力得到明显的提升! 这样说,可能很多人都抱有怀疑的态度,但是我觉得你应该相信.如果你愿意尝试,我相信你将会得到巨大的回报! 这篇文章将告诉你如何阅读代码,阅读什么样的代码最有效.如果你已经很擅长阅读别人的代码了,那读完此篇文章,你可能会发现新的方法. 应该阅读什么代码? 这是一个很重要的决定,很难给出具体的建议.我无法简单的告诉你应该阅读这个代码还是那

如何阅读一份代码?

https://zhuanlan.zhihu.com/p/26222486 ****************************** 上文谈到了像读书一样阅读源码的重要性,今天谈谈如何阅读一份代码.我所谓的一份代码,其范围可能从几千行到数万行,有时甚至可多达数十万行.这些代码作为一个有机体,共同完成某些重要的功能.比如说几个著名的 full fledged web framework,祖师爷 rails,师叔 django 和小师妹 phoenix: 三者对比很有意思 - rails / d

接手别人的代码,死的心有吗?

团队里的程序员张三丰要离职,领导让你接手他的工作,叮嘱你一定要尽快掌握张三丰的代码.你的心儿扑通扑通地跳动,你的脑海里萦绕着三个选择:是拒绝呢,还是拒绝呢,还是拒绝呢?你强颜欢笑但实际上心烦意乱怨气纵横--接手别人的代码,那可是程序员要面对的最痛苦最可怕的事啊. 你记起江湖前辈黄药师说过的一句话:如果你恨他,就让他去接手别人的代码. 你的内心是拒绝的,可是你却不由自主地说出了"可以啊"三个字,于是你悲催的旅程拉开了序幕. 这,就是程序员的工作啊~~~~你有什么办法--你特别担心自己会被

如何读别人的代码

p { margin-bottom: 0.25cm; direction: ltr; line-height: 115%; text-align: justify; orphans: 0; widows: 0 } p.western { font-family: "Calibri", serif; font-size: 10pt } p.cjk { font-family: "宋体"; font-size: 10pt } p.ctl { font-family: ;

log下一次改别人的代码

有次接到个PM要改版一个功能的UI设计,前端童鞋还没敲定页面的时候,我先看了看这个功能的后台,我擦...简直是惨不忍睹..对PM来说是改版UI,对我这么有点代码洁癖的来说就是优化代码. 首先我能肯定的是,原来这个童鞋对面向对象理解的不太好..其次对代码的整合不够...我就简单log下.. 先说面向对象理解的问题,在一个入口方法里,去调用该类自己的私有方法,这里传参的时候竟然把类属性的值都传过去了..当时我就汗了,,显然在被调用的方法里,直接就可以获取这些类属性的值了..为什么还要去传呢... 再