技术开发 频道

读懂程序代码,使心法皆为我所用

熟悉沟通语言与惯例用语

不论如何,有些基本的准备,是阅读他人程序代码时必须要有的。

首先,你最好得了解程序代码写成的程序语言。想要读懂法文写成的小说,总不能连法文都不懂吧。有些情况则很特殊。我们虽然不懂该程序代码撰写所用的语言,但是因为现代语言的高阶化,而且流行的程序语言多半都是血统相近,所以即使不那么熟悉,有时也可勉力为之。

除了认识所用语言之外,再来就是要先确认程序代码所用的命名惯例(naming convention)。了解命名惯例很重要,不同的程序员或开发团队,差异可能很大。

这命名惯例涵盖的范围通常包括了变量的名称、函式的名称、类别(如果是对象导向的话)的名称、代码档案、甚至是项目建构目录的名称。倘若使用了像设计模式之类的方法,这些名称更有一些具体的表述方式。

命名惯例有点像是程序员在程序语言之上,另行建构的一组沟通行话。程序员会通过共同约束、遵守的命名惯例,来表达一些较高阶的概念。例如,有名的匈牙利式命名法,便将变量名称以属性、型别、说明合并在一起描述。对程序员来说,这种方式能够提供更丰富的信息,以了解该变量的作用及性质。

对程序代码阅读来说,熟悉这个做法之所以重要,是因为当你了解整个系统所采用的惯例时,你便能试着以他们所共同操用的语汇来进行理解。倘若,不能了解其所用的惯例,那么这些额外提供的信息,就无法为你所用。像以设计模式写成的程序代码,同样处处充满着模式的名称,诸如:Factory、Facade、Proxy等等。以这些名称指涉的类别,也直接通过名称,表达了它们自身的作用。对于懂得这命名惯例的读者来说,不需要深入探索,也能很快捕捉到这些类别的意义。

当你拿到一套必须阅读的程序代码时,最好先取得命名惯例的说明文件。然而,并不是每套程序代码都附有此类的说明文件。另一个方式,就是自己到程序代码中,大略浏览一遍,有经验的程序员可以轻易发掘出该系统所用的命名惯例。

常见的命名方式不脱那几类,这时候经验就很重要,倘若你知道的惯例越多,就越能轻易识别他人所用的惯例。如果运气很糟,程序代码所用的惯例是前所未见的,那么你也得花点时间归纳,凭自己的力量找出这程序代码命名上的规则。

掌握程序代码撰写者的心态与习惯

大多数的程序代码,基本上都依循一致的命名惯例。不过运气更差的时候,一套系统中可能会充斥着多套命名惯例。这有可能是因为开发团队由多组人马所构成,每组人马都有不同的文化,而在项目开发管理又没有管控得宜所造成。最糟的情况,程序代码完全没有明显的惯例可言,这时候阅读的难度就更高了。

想要阅读程序代码,得先试着体会程序代码作者的“心”。想要这么做,就得多了解对方所使用的语言,以及惯常运用的语汇。在下一回中,我们将继续探讨阅读程序代码的相关议题。

0
相关文章