如何阅读他人的程序代码

来源:互联网 发布:法国 知乎 编辑:程序博客网 时间:2024/05/10 01:24

透过开放原始码你可以:

1.学到新的技术;

2.学到高手的架构设计;

3.以直接自开放原始码项目中抽取、提炼自己所需的程序代码;


接触他人程序代码的三种不同程度:

.1了解;

2.修改、扩充;

3.抽取、提炼;


阅读他人程序代码四件事:

准备、工具、方法、心态;


阅读他人代码的基本准备:

1.了解程序代码写成的程序语言;

2.确认程序代码所用的命名惯例:变量的名称、函数式的名称、类别的名称以及原始码档案和项目构建目录名称;

3.设计模式;


如何得知命名惯例:

a.取得命名惯例的说明文件;

b.进到程序代码中大致的浏览一遍,自行发觉出该系统所用的命名惯例;

c.常见的命名方式不脱几类:经验很重要,知道的惯例越多,就越能轻易的识别他人所用的惯例;

d.如果想阅读的程序代码的惯例是你前所未见的,请花时间归纳,找出规则;


对工具的需求

1.浏览原始码;

2.找出特定类别/函式/变数位于哪一原始文件

3.找出特定讯息由哪一函数式所丢出(或记录);

4.找出自定义类别/型别的引用关系

5.找出函式的呼叫关系;

6,随着浏览的需求,快速的切换至感兴趣的函式程序代码本体部分;

7.自动从原始码建立模型:如自动产生类别图。



常用工具:

IDE、grep、gtags、htags;



阅读他人程序就像是在拼图:

你凭借自己的组织能力,自行在不同的程序代码键跳跃,拼凑出自己闹总想要构建的图像,在阅读程序代码时,你最常做的事,就是随着程序中的某个控制流,将你阅读的重心从某个函式移至它所呼叫的另一个函式。通常你不会为了解决一个特定的问题,而从头到尾的把整个程序代码读完,你只会试着拼出你所需的部分,随着时间积累,你会频出对整个系统面貌的了解。


拼图的方法:

1.决定起始点;

2.找出欲读的函式位置;

3.了解函式是如何实作以达成作用;

4.找出那些元素(函式、变数……)和此函式相关

5.决定欲前进至那一个函式一直到所需的拼图完成;


要拼出一个什么样的图取决于你的动机:

1.追踪除错;

2.修改既定的功能;

3.扩充新功能;

4.撷取某一模块;


阅读方向:

1.由下至上:从细节到全貌

2.由上至下:从全貌到细节;

两种方向在阅读时有时会交错使用,但会依据阅读的目的的决定一开始的方向;


以追踪除错为目的:

为了解决既有系统的特定问题而阅读代码,出事的阅读方向由下到上,找出阅读的起点:找出想要解决的问题所在,从画面上的错误讯息或log文件中的记录开始寻找对应的程序代码位置;从上一层的函式中确定下一个阅读函式。


如何找出特定功能模块所在:

当我们想要修改既定的功能,撷取某一个模块都需要找出特定功能模块所在;

找出阅读的起点:了解系统的架构,由上而下找出该功能模块涉及的原始文件、类别、及函式,由原始档、类别及函式的名称,推测它们所实作的功能模块;

了解系统的架构:了解系统所用的技术及应用程序框架(MFC,struts,Hibernate);用自动建模工具,自动建立系统模型;找出主要的子系统:系统如何初始化,与这个系统想接的其他系统(或用户)有哪些,相邻的接口又是什么,系统如何反应各种事情,系统如何处理各种异常及错误。

由上而下,探究系统构架:归纳常见的构架模式;找到程序入口;由上而下,抽丝剥茧;展开树状结构,一层一层的由最外层结构展开的树状结构,是自己需要了解的深入程度,决定要展开的层数;


0 0
原创粉丝点击