变量命名
今天抽时间把很久之前买的一本书《代码大全》中第十一章:(The Power of Variable Name)变量名的力量大概的看了一下,然后又去网上找了一份编码规范的文档大致的浏览了一下,看的时候觉得自己写代码的时候关于变量命名等问题确实存在很大的问题,也难怪这几天写代码诸多不顺。
总结一下吧
选择好变量名注意事项
- 变量名不要太长也不要太短,要能准确的表达出变量所代表的含义,也要能清晰的一眼看出来,如果变量名太长的话,读起来往往觉得很费力,一般来说,变量的名称在10到16个字符较为合适,
- 作用域对变量的命名同样有很大的影响,当你在程序中使用 i 作为变量的时候,对于这个变量的作用域应该心知肚明,i 或许在你的代码里只是作为一个临时的数据,作用域有限同时一般用来作为数组的下标或循环计数器。
- 关于命名中的计算值,举例有一下几个:Total, Average, Max, Min, Record; 当我们的程序涉及到类似的表示计算的变量时,最好在命名的时候考虑吧以上类似的限定词加到名称之后(也要注意表明这是什么样的计算值,比如说平均身高:HeightAverage)
- 注意变量命中常用的对仗词
一边 | 另一边 |
---|---|
begin | end |
first | last |
min | max |
locked | unlocked |
old | new |
visible | invisible |
source | target |
source | destination |
up | down |
为特定类型的数据命名
PS : 我在尽力用直接不含糊的语言去描述,以加强本人的规范编码意识,如若不赞同,勿怪
为循环下标命名:
在对循环下标命名的时候,不要用i, j, k 之类,用描述性较好的方式去定义这一类变量,《代码大全》中举例:谨慎使用下标串话(index cross-talk)可以避免以下问题:1 . 想用 j 的时候写了 i ,想用 i 的时候写了 j
2 . 同时使用描述性较好的变量名可以是数据访问变得更加清晰:score[teamIndex][eventIndex] 要比 score[i][j]给出的信息要多为状态量命名:
1 . 为状态量取一个比flag更好的名字,状态量中最好不要出现flag
2 . 对于命名状态量而言,枚举类型会是个不错的选择。为临时变量命名:
使用temp , x ,等没有明确指向意义的变量名称一般是因为我们没有弄清楚相关问题,因此,我们可能会更加倾向于比其他变量更加随意的对待这些变量,从而增加 了出错的可能性。
为枚举类型命名:
使用组前缀对枚举类型的变量命名
Public enum Color{ Color_Red, Color_Blue, Color_Green }
相关命名规则示例
实体 | 描述 |
---|---|
ClassName | 类名混合使用大小写,首字母大写 |
TypeName | 类型定义,同上 |
EnumeratedTypes | 除遵从上述规则外,枚举类型总是用复数形式表示 |
localVariable | 局部变量混合使用大小写,首字母小写 |
g_GlobalVariable | 全局变量名使用g_前缀 |
CONSTANT | 常量全部大写 |
MACRO | 宏全部大写 |
Base_EnumeratedType | 加枚举前缀 |
常用前缀
UDT:用户自定义类型
UDT | 描述 |
---|---|
ch | 字符,character 或者一份文档中的字符 |
doc | 文档(document) |
pa | 段落(Paragraph) |
scr | 屏幕区域 (Screen Region) |
sel | 选中范围 (selection) |
wn | 窗体 (window) |
form | 窗体 (winform) |
语意前缀 | 含义 |
---|---|
lim | 上限 (通常为 last + 1) |
m | 类一级的变量 |
max | 数组或列表中绝对的最后一个元素 |
min | 数组或列表中绝对的第一个元素 |
p | Pointer 指针 |
应该避免的名字
- 避免使用令人误解的名字或者缩写
- 避免使用具有相似含义的名字
- 避免使用具有不同含义但是却极为相似的变量
- 避免使用发音相近的名字(防止交流的时候出现误解)
- 避免在命名中使用数字
- 避免拼写错误的单词
- 不要仅靠大小写来区分变量
- 避免使用多种自然语言
- 避免使用标准类型
- 不要使用与变量含义完全无关的名字
- 避免在名字中包含易混淆的字符
summary key points
- 好的变量名是提高程序可读性的一项关键因素。对于特殊种类的变量,比如循环下标和状态变量,需要加以特殊考虑
- 名字要尽可能的具体,那些太模糊的或者太通用的以至于能够用于多种目的的名字通常都是很不好的
- 命名规则应该能够区分局部数据,类数据和全局数据。它们应该还可以区分类型名,常量,枚举类型名字和变量名。
- 无论做哪种类型的项目,你都应该采用某种命名规则。你所采用的规则的种类取决于你的程序的规模和项目成员的人数
- 现代编程语言很少要用到缩写。如果你真的要用缩写,请使用项目缩写词典或者标准前缀来帮你理解缩写
- 代码阅读的次数远远多于编写的次数。确保你所取的名字更侧重于阅读方便而不是编写方便