如何阅读他人的程序代码
来源:互联网 发布:法国 知乎 编辑:程序博客网 时间: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);用自动建模工具,自动建立系统模型;找出主要的子系统:系统如何初始化,与这个系统想接的其他系统(或用户)有哪些,相邻的接口又是什么,系统如何反应各种事情,系统如何处理各种异常及错误。
由上而下,探究系统构架:归纳常见的构架模式;找到程序入口;由上而下,抽丝剥茧;展开树状结构,一层一层的由最外层结构展开的树状结构,是自己需要了解的深入程度,决定要展开的层数;
- 如何阅读他人的程序代码
- 如何阅读他人的程序代码
- 如何阅读他人的程序代码
- 如何阅读他人的程序代码
- 如何阅读他人的程序代码
- 如何阅读他人的程序代码【转载】
- 如何阅读他人的程序代码【转载】
- 《如何阅读他人的程序代码》的阅读笔记
- (转)如何阅读他人的程序代码(上)
- (转)如何阅读他人的程序代码(下)
- 如何有效地阅读他人的程式码
- 如何去阅读他人的代码
- 如何更有效率的阅读他人源码
- 如何阅读他人项目
- 如何阅读程序代码
- 如何有效阅读他人代码(一)
- 如何阅读他人代码(二)
- 如何阅读他人代码(三)
- [安卓]手机管家(五)防盗之加密
- A simple Complex class
- 数据结构(三)---队列:
- Set Matrix Zeroes
- 6.12
- 如何阅读他人的程序代码
- 树莓派共享文件至pc(samba)
- LeetCode——Happy Number
- [leetcode] Binary Tree Inorder Traversal
- 2015061205 - 找工作相关问题
- java中对象句柄的解释
- 基于MINA框架快速开发网络应用程序
- 主从复制,读写分离
- 完全教程 Aircrack-ng破解WEP、WPA-PSK加密利器