现在的位置: 首页 > 综合 > 正文

如何阅读他人代码(三)

2017年11月17日 ⁄ 综合 ⁄ 共 2444字 ⁄ 字号 评论关闭

原文为繁体中文,地址:http://www.ithome.com.tw/itadm/article.php?c=47895

下文为经过Google翻译过的简体中文版,有翻译不准确的地方,请参照原文一起阅读:


阅读他人的程序码( 3 ) -优质工具在手,读懂程序非难事

系统的复杂度往往超过人脑的负荷。阅读程序码的时候,你会需要更多工具提供协助。使用好的整合式开发环境( IDE )的或文字编辑器,就能提供最基本的帮助。

阅读程序码的动作,可以是很原始的,利用最简单的文字编辑器,逐一开启原始码,然后凭借着一己的组织能力,在不同的程序码间跳跃,拼凑出脑中想要构建的图像。 
不过,系统的复杂度往往超过人脑的负荷。阅读程序码的时候,你会需要更多工具提供协助。使用好的整合式开发环境( IDE )的或文字编辑器,就能提供最基本的帮助。 

善用文字编辑器或IDE中,加速解读程序码 
许多文字编辑器提供了常见程序语言的语法及关键字标示功能。这对于阅读来说,绝对能够起很大的作用。有些文字编辑器(例如我常用的编辑器及偶而使用的记事本+ + ,甚至能够自动列出某个原始档中所有定义的函式清单,更允许你直接从清单中选择函式,直接跳跃到该函式的定义位置。这对于阅读程序码的人来说,就提供了极佳的便利性。 

因为在阅读程序码时,最常做的事,就是随着程序中的某个控制流,将阅读的重心,从某个函式移至它所呼叫的另一个函式。所以对程序人来说,阅读程序码时最常做的事之一就是:找出某个函式位在那一个原始档里,接着找到该函式所在的位置。 

好的的IDE能够提供的协助就更多了。有些能够自动呈现一些额外的资讯,最有用的莫过于函式的原型宣告了。例如,有些的IDE支持当游标停留在某函式名称上一段时间后,它会以提示的方式显示该函式的原型宣告。 

对阅读程序码的人来说,在看到程序码中呼叫到某个函式时,可以直接利用这样的支持,立即取得和这个函式有关的原型资讯,马上就能知道呼叫该函式所传入的各个引数的意义,而不必等到将该函式的定义位置找出后,才能明白这件事。 

grep按(读者:推荐来源透视)是一个基本而极为有用的工具 
除了选用好的文字编辑器或的IDE之外,还有一个基本,但却极为有用的工具,它就是grep按。熟悉的Unix作业系统的程序人,对grep按这个公用程序多半都不陌生。 grep按最大的用途,在于它允许我们搜寻某个目录(包括递回进入所有子目录)中所有指定档案,是否有符合指定条件(常数字符串或正规表示式)档案。 

倘若有的话,则能帮你指出所在的位置。这在阅读程序码时的作用极大。当我们随着阅读的脚步,遇上了任何一个不认识,但自认为重要的类别,函式,资料结构定义或变数,我们就得找出它究竟位在这茫茫程序码海中的何处,才能将这个图块从未知变为已知。 
grep按之所以好用,就是在于当我们发现某个未知的事物时,可以轻易地利用它找出这个未知的事物究竟位在何方。此外,虽说grep按是Unix系统的标准公用程序之一,但是像视窗这样子的平台,也有各种类型的
grep按程序。对于在视窗环境工作的程序人来说,可以自行选用觉得称手的工具。 

gtags可建立索引,让搜寻更有效率 
grep按虽然好用,但是仍然有一些不足之处。第一个缺点在于它并不会为所搜寻的原始码档案索引。每当你搜寻时,它都会逐一地找出所有的档案,并且读取其中的所有内容,过滤出满足指定条件的档案。当专案的原始码数量太大时,就会产生搜寻效率不高的问题。 

第二个缺点是它只是一个单纯的文字档搜寻工具,本身并不会剖析原始码所对应的语言语法。当我们只想针对函式”名称进行搜寻时,它有可能将注解中含有该名称的原始码,也一并找了出来。 

针对grep按的缺点,打算阅读他人程序码的程序人,可以考虑使用像是gtags这样子的工具。 gtags是源代码的GNU全局标记系统,它不只搜寻文字层次,而且因为具备了各种语言的语法剖析器,所以在搜寻时,可以只针对和语言有关的元素,例如类别名称,函式名称等。 

而且,它能针对原始码的内容进行索引,这意谓一旦建好索引之后,每次搜寻的动作,都毋需重新读取所有原始码的内容并逐一搜寻。只需要以现成的索引结构为基础,即可有效率的寻找关键段落。 

gtags提供了基于命令行的程序,让你指定原始码所在的目录执行建立索引的动作。它同时也提供程序让你得如同操作grep按一般,针对索引结构进行搜寻及检索。它提供了许多有用的检索方式,例如找出专案中定义某个资料结构的档案及定义所在的行号,或者是找出专案中所有引用某资料结构的档案,以及引用处的行号。 

这么一来,你就可以轻易地针对阅读程序码时的需求予以检索。相较于grep按所能提供的支持, gtags这样的工具,简直是强大许多。 

再搭配htags制作的HTML文件,更是如虎添翼 
还有一个绝对需要一提的工具。这个叫做htags的工具,能够帮你将已制作完成的索引结构,制作成为一组相互参考的的HTML文件。基本上,利用这样的的HTML文件阅读程序码,比起单纯地直接阅读原始码,来得更有结构。原因是阅读程序码时,这样的的HTML文件,已经为你建立起在各个原始码档案片段间跳跃的链结。例如,图一是针对一个有名的开放原始码专案ffmpeg ,由gtags所产生出来的的HTML文件首页的一部分。 

 

htags工具首先为你找出所有定义的Main )函式的档案,并且列出所在的函式。找出的Main )函式,时常是阅读程序码的第一步,因为主要( )函式是程序的主要入口点,所有的动作皆由此启动,它是一切事物的源头。 
凭借htags制作的的HTML文件,你可以轻易地点击超连结,直接进到的Main )函式所在的程序码片段,如图二。 

当我们检视上述原始码时,发现av_register_all )是个陌生,无法了解的事物,而想要搞懂它究竟是什么,可以再继续点击这个函式,如图三。这真是太方便了!阅读至此,你会猛然发现, gtags仿佛就是为了阅读程序码而专门量身打造的利器。 

抱歉!评论已关闭.