为名字附带更多信息
我们前面提到,一个变量名就像是一个小小的注释。尽管空间不是很大,但不管你在名中挤进任何额外的信息,每次有人看到这个变量名时都会同时看到这些信息。
因此,如果关于一个变量有什么重要事情的读者必须知道,那么是值得把额外的“词”添加到名字中的。例如,假设你有一个变量包含一个十六进制字符串:
如果让读者记住这个ID的格式很重要的话,你可以把它改名为hex_id。
带单位的值
如果你的变量是一个度量的话(如时间长度或者字节数),那么最好把名字带上它的单位。
例如,这里有些JavaScript代码用来度量一个网页的加载时间:
这段代码里没有明显的错误,但它不能正常运行,因为getTime()会返回毫秒而非秒。
通过给变量结尾追加_ms,我们可以让所有的地方更明确:
除了时间,还有很多在编程时会遇到的单位。下表列出一些没有单位的函数参数以及带单位的版本:
附带其他重要属性
这种给名字附带额外信息的技巧不仅限于单位。在对于这个变量存在危险或者意外的任何时候你都该采用它。
例如,很多安全漏洞来源于没有意识到你的程序接收到的某些数据还没有处于安全状态。在这种情况下,你可能想要使用像untrustedUrl或者unsafeMessageBody这样的名字。在调用了清查不安全输入的函数后,得到的变量可以命名为trusted Url或者safeMessageBody。
下表给出更多需要给名字附加上额外信息的例子:
但你不应该给程序中每个变量都加上像unescaped_或者_utf8这样的属性。如果有人误解了这个变量就很容易产生缺陷,尤其是会产生像安全缺陷这样可怕的结果,在这些地方这种技巧最有用武之地。基本上,如果这是一个需要理解的关键信息,那就把它放在名字里。
这是匈牙利表示法吗?
匈牙利表示法是一个在微软广泛应用的命名系统,它把每个变量的“类型”信息都编写进名字的前缀里。下面有几个例子:
这实际上就是“给名字附带上属性”的例子。但它是一种更正式和严格的系统,关注于特有的一系列属性。
我们在这一部分所提倡的是更广泛的、更加非正式的系统:标识变量的任何关键属性,如果需要的话以易读的方式把它加到名字里。你可以把这称为“英语表示法”。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论