14.5 一种不同的意见:Go风格指南
不是每个人都赞同我对命名的看法。一些Go语言的开发者认为,名称应当非常简短,通常只有一个字符。在关于Go语言名称选择的演讲中,Andrew Gerrand指出,“长的名称会掩盖代码的作用”(见注解)。 他介绍了这个代码示例,其中使用了单字母变量名:
并认为它比下面这个使用较长名称的版本更具可读性:
就个人而言,我不觉得第二个版本比第一个版本更难读。如果要说些什么的话,count
这个名字对变量的行为提供了比n
更好的线索。在第一个版本中,我为了弄清楚n
的含义,最终通读了代码,而在第二个版本中,我不觉得需要这么做。但是,如果n
在整个系统中被一致地用来指代计数(而不是其他),那么这个简短的名字对其他开发者来说可能会很清楚。
Go的文化鼓励用同一个短名称来表示多种不同的东西:ch
表示字符或通道,d
表示数据、差异或距离,等等。对我来说,像这样模棱两可的名字很可能会导致混乱和错误,就像在block
的例子中一样。
总的来说,我认为可读性必须由读者来决定,而不是由编写者决定。如果你用简短的变量名编写代码,而阅读的人觉得很容易理解,那就很好。如果你开始收到抱怨说你的代码很晦涩难懂,那么你应该考虑使用更长的名字(在网上搜索“go language short names”就会发现一些这样的抱怨)。同样地,如果我开始收到抱怨说长的变量名使我的代码更难读,那么我会考虑使用更短的。
Gerrand提出了一个我同意的意见。“一个名称的声明和它的使用之间的距离越大,这个名字就应该越长”。先前关于使用名为i
和j
的循环变量的讨论就是这个规则的一个例子。
Last updated