名字应该有多长
当选择好名字时,有一个隐含的约束是名字不能太长。没人喜欢在工作中遇到这样的标识符:
名字越长越难记,在屏幕上占的地方也越大,可能会产生更多的换行。
另一方面,程序员也可能走另一个极端,只用单个单词(或者单一字母)的名字。那么如何来处理这种平衡呢?如何来决定是把一变量命名为d、days还是days_since_last_update呢?
这是要你自己要拿主意的,最好的答案和这个变量如何使用有关系,但下面还是提出了一些指导原则。
在小的作用域里可以使用短的名字
当你去短期度假时,你带的行李通常会比长假少。同样,“作用域”小的标识符(对于多少行其他代码可见)也不用带上太多信息。也就是说,因为所有的信息(变量的类型、它的初值、如何析构等)都很容易看到,所以可以用很短的名字。
尽管m这个名字并没有包含很多信息,但这不是个问题。因为读者已经有了需要理解这段代码的所有信息。
然而,假设m是一个全局变量中的类成员,如果你看到这个代码片段:
这段代码就没有那么好读了,因为m的类型和目的都不明确。
因此如果一个标识符有较大的作用域,那么它的名字就要包含足够的信息以便含义更清楚。
输入长名字——不再是个问题
有很多避免使用长名字的理由,但“不好输入”这一条已经不再有效。我们所见到的所有的编程文本编辑器都有内置的“单词补全”的功能。令人惊讶的是,大多数程序员并没有注意到这个功能。如果你还没在你的编辑器上试过这个功能,那么请现在就放下本书然后试一下下面这些功能:
1.键入名字的前面几个字符。
2.触发单词补全功能(见下表)。
3.如果补全的单词不正确,一直触发这个功能直到正确的名字出现。
它非常准确。这个功能在任何语种的任何类型的文件中都可以用。并且它对于任何单词(token)都有效,甚至在你输入注释时也行。
首字母缩略词和缩写
程序员有时会采用首字母缩略词和缩写来命令,以便保持较短的名字,例如,把一个类命名为BEManager而不是BackEndManager。这种名字会让人费解,冒这种风险是否值得?
在我们的经验中,使用项目所特有的缩写词非常糟糕。对于项目的新成员来讲它们看上去太令人费解和陌生,当过了相当长的时间以后,即使是对于原作者来讲,它们也会变得令人费解和陌生。
所以经验原则是:团队的新成员是否能理解这个名字的含义?如果能,那可能就没有问题。
例如,对程序员来讲,使用eval来代替evaluation,用doc来代替document,用str来代替string是相当普遍的。因此如果团队的新成员看到FormatStr()可能会理解它是什么意思,然而,理解BEManager可能有点困难。
丢掉没用的词
有时名字中的某些单词可以拿掉而不会损失任何信息。例如,Convert To String()就不如To String()这个更短的名字,而且没有丢失任何有用的信息。同样,不用DoServeLoop(),ServeLoop()也一样清楚。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论