What?
如何给变量命名
Why?
- 易读(你三个月前的代码=别人的代码),易记,恰如其分
- 整齐的命名具有美感,强迫症患者居家旅行杀人放火之必备
How?
以问题为导向
好名字反映的是问题(what),并非解决方案(how)。名字不应体现计算细节
-
// good Object studentData; int sum; // bad Object inputData; int calcValue;
控制变量名长度
- 合适的变量名长度为10~16个字符
- 较长的名字适用于少用到的全局变量,较短的名字适用于局部变量、循环变量
- 计算限定词total, sum, average, max, min, count, index等需要加到变量名最后
int revenueTotal, expenseAverage, expenseTotal; int studentCount, studentIndex;
合理使用对仗词
- begin/end
- first/last
- locked/unlocked
- min/max
- next/previous
- old/new
- opened/closed
- visible/invisible
- source/target
- source/destination
- up/down
循环变量
- 循环内用简单的i, j, k, l,不要在循环外使用这些作为变量名,因为它们已经太深入人心了
- 嵌套循环,需要明确变量名
- 循环外用到的循环变量,需要需要明确变量名
状态变量、标志位
- 避免使用flag、status这些不具备明确意义的名字
- 使用paid、approved这些可以直接读懂的更好
临时变量
- 别用temp、tmp,要使用有明确意义的
布尔变量
- good:done、found、error、success、fileAvailable
- bad:isDone、isFound,is是多余的
- bad:done/undone、success/fail,可以用一个变量解决的问题不必再额外增加一个(!done、!success)
枚举类型
- 要体现出自己是一个枚举组中的一员,如Color.Black、Color.White
public Enum Color { Black, White } Color black = Color.Black;
常量
- 大写字母,下划线分隔。除此之外不应在变量名中出现下划线
关于缩写
- 去掉所有的非前置元音,如computer->cmptr、screen->scrn、integer->intgr
- 去掉虚词and、or、the
- 使用每个单词的第一个或前几个字母
- 统一在每个单词的第一/第二/第三个字母处截断
- 去除无用后缀,如ed、ing
- 反复缩减直到长度控制在20字符
- bad:b4、hilite
- bad:myVar
- 缩写要一致,一次使用终身使用
Bad Manners
- 变量名中使用数字,如file1、file2
- 拼错单词
- 仅仅靠大小写来区分
- 中英混杂