Go语言精进之路:从新手到高手的编程思想、方法和技巧(1)
上QQ阅读APP看书,第一时间看更新

第7条 使用Go命名惯例对标识符进行命名

计算机科学中只有两件难事:缓存失效和命名。

——Phil Karlton,Netscape架构师

从编程语言诞生那天起,给标识符命名这件事就一直伴随着程序员。命名看似简单,但在如今大规模软件工程需要程序员个体间紧密协作的背景下,就像上面Phil Karlton所说的那样,给出好的命名并非易事

命名是编程语言的要求,但是好的命名却是为了提高程序的可读性和可维护性。好的命名是什么样子的呢?Go语言的贡献者和布道师Dave Cheney给出了一个说法:“一个好笑话,如果你必须解释它,那就不好笑了。好的命名也类似。”无论哪门编程语言,良好的命名都应该遵循一些通用的原则,但就像之前提到的“语言影响思维”的假说那样,不同的编程语言会有一些个性化的命名惯例。

在gofmt的帮助下,Go语言统一了代码风格标准,Gopher再也无须为括号摆放位置、使用制表符还是空格、是否对齐赋值操作等而争论了。在这种情况下,命名成了广大Gopher为数不多可以“自由发挥”的空间。不过关于命名,Go语言也有自己期望大家共同遵循的原则。

Go的设计哲学之一就是追求简单,它在命名上一样秉承着简单的总体原则。但简单并不意味着一味地为标识符选择短小的名字,而是要选择那种可以在标识符所在上下文中保持其用途清晰明确的名字。Go及其标准库的实现是Go命名惯例形成的源头,因此如果要寻找良好命名的示范,Go标准库是一个不错的地方。本条中的示例主要来自Go标准库代码,一些结论来自对标准库代码的分析。

要想做好Go标识符的命名(包括对包的命名),至少要遵循两个原则:简单且一致;利用上下文辅助命名。

下面将详细阐述这两个原则以及在这两个原则下的一些命名惯例。