- 远古的人认为命名某个事物就是对其拥有权利。这不仅仅是简单的宣称所有权。一些人对名字的力量坚信不疑,以至于他们从不将自己的名字告诉陌生人,因为他们害怕陌生人会使用名字来伤害他。
- 名字所描述的内容包括:1. 身份;2. 行为;3. 识别,名字将一个事物标明为一个性质独特的实体。
- 我们为什么应当恰当的命名呢?因为编写源代码就是关于如何进行清晰的交流,恰当的命名意味着“了解名称就可以了解对象”。
- 清晰的命名是优秀代码的特点之一,一个对象的名称应该清晰的描述了这个对象。
- 在编码时,需要进行命名的内容包括:1. 变量;2. 函数;3. 类型; 4. 命名空间或者包的名字;5. 宏; 6. 源文件名称。
- 为了恰当的命名,在为一个对象想出名称以前,必须准确的了解这个对象是什么,如果你不知道你所命名的对象是什么,它的用途和它存在的理由,你怎么能够赋予它一个有意义的名字呢?所以说糟糕的名称通常表明你对需要命名的对象缺乏理解。
一个好的名称具有以下特点: - 技术上正确。符合所使用的语言在命名上的限制。
- 符合语言习惯。要了解你的语言的命名规则,更重要的是,了解这种语言的习惯用法,公共命名约定是什么?应用这些语言习惯和约定。
- 恰当。包括以下几点:1. 长度,在进行命名是,将重点放在清晰而非简洁上,慎用各种奇怪的缩写;2. 格调,一般在命名时不要使用语气助词。
- 理解在较短的名称和较长的名称之间进行权衡的考虑因素,即它们是如何依赖于变量的作用范围的,对于循环计数器这种变量,就可以简单的以i来命名,但是要注意在多重循环时,最好起一个易理解的名字。
如何命名一个变量: - 一般情况,变量用一个名词来表示。
- 如何不是名词,通常会是一个名词化的动词。
- 有很多用于修饰成员变量的面向对象的语言约定,以说明它们是成员,而不是局部变量或者全局变量。
- 一种常见的命名习惯是使用首字母缩略词作为简洁和“有意义”的名称,例如:我们可以这样声明一个变量:SomeTypeWithMeaningfulNa
ming stwmn(10); - 一般情况下,将类姓名和变量名区分开,类姓名通常都有一个大写的首字母,而变量名则具有小写的首字母,例如:我们可以这样声明一个变量:Window window;
如何命名函数: - 如果变量像一件可以握在手里的东西,那么函数就是你拿这件东西所做的事,它的名字在逻辑上更应该是一个动词。
- 有意义的函数名字应该避免使用be、do和perform等词语。
- 我们应该隐藏函数内部的具体实现过程,始终从使用者的角度来为函数命名。但是当在为请求信息的简单查询函数进行命名的时候,可以不必遵守。
- 当你编写一个函数时,应该使这个函数很好的文档化,其名称应该仍然是关于函数用途的一个清晰的描述,这是函数契约的一部分。
如何命名类型: - 对类的命名没有太多严格的直觉推理法,因为不同的类有不同的用途。
- 在名称中避免使用多余的词,尤其实在类型名中避免使用以下这些词语:class、data、object和type。
- 要确保你描述的数据的类不是一个真正的对象。
- 糟糕的类名会使程序员们感到困惑,较好的命名能为代码的逻辑提供清晰的思路。
如何命名名字空间: - 选择描述其内容的关系的词语。
- 不要选择重复暗示命名对象是一个集合的名称,例如:controls_group就不是一个好的名称。
如何命名宏: - 名字全部使用大写字母。
- 不要为其他任何对象使用这种全部大写的名称。
如何命名文件: - 注意大小写,一些文件系统不区分大小写。
- 确保同一目录中的文件名不仅仅只是大小写不同。
- 尽量保证你创建的文件都具有不同的名称,即使这些文件都分布在不同的目录中。
一个好的名字,具有以下特点: - 保持前后一致,命名一致不仅限于创建名称时的大小写和格式化,一个名称将确立一个隐喻,在这个程序中,这写隐喻应该保持一致。
- 利用代码的内容,我们要充分利用上下文,写出简洁的、描述性的以及没有多余信息的名称。
- 使用对你有利的名字。
一个好的名字,不应该具有的特点: - 含义模糊。
- 啰嗦。
- 不准确或使人误解。
- 有歧义或者含糊不清。
- 太做作。
- 优秀的程序员:1. 意识到名字的重要性并尊重它们;2. 为他们创建的所有对象都考虑如何进行命名,并且选择恰当的名称;3. 使许多考虑因素保持平衡,包括名字的长度、清晰度、上下文等;4. 从整体的视角来命名,因此他们的名称在一个项目中都保持一致。
- 糟糕的程序员:1. 不关心他们的代码是否清晰;2. 很快的编写代码而很少进行思考;3. 忽视语言的自然习惯;4. 命名时前后不一致;5. 不从整体的角度进行思考,不考虑他们的代码怎样和整体相结合。
- 在许多不同的上下文中,重复使用同一个局部变量名是完全可以接受的。
- 不要用局部变量名隐藏全局变量名,这样容易造成混淆。
- 优秀的编码高手会把良好的命名当做一种习惯,而且不需要编码规范来“约束”。
作者:
李胜攀
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。