1,名副其实:
命名变量的时候名字有具体的意义, 能看出代码的功能
反:
public List<int[]> getThem() {
List<int[]> list1 = new ArrayList();
for(int[] x: theList) {
if(x[0] == 4) {
list1.add(x);
}
}
return list1;
}
正:
public List<int[]> getFlaggedCells() {
List<int[]> flaggedCells = new ArrayList();
for(int[] cell: gameBoard) {
if(cell[STATUS_VALUE] == FLAGGED) {
flaggedCells.add(cell);
}
}
return flaggedCells;
}
2,避免误导
别用accountList来指称一组账号,除非他是真List类型。 list这个词在java里面有特殊的意义,避免使用这种有特殊意义的词语,用accountGroup甚至用accounts都可以
3,做有意义的区分
避免使用包含数字的命名,这种区分没有明显的差别,让变量之间的区别度变大
反:
getActiveAccount()
getActiveAccounts()
getActiveAccountInfo()
这样的代码缺乏明显的区分度,如果缺少明显的约定,moneyaccounnt和money就没区别,customerInfo与customer没区别,accountData和account没区别,theMessage和message没区别,要区别名称就要以读者能区分的名称。
4,使用读的出来的命名
避免使用自造词
5,使用可搜索的名称
单字母名称仅仅适用于短方法中的本地变量,名称长短应该和他的作用域大小相对应。
6,接口的实现
接口shapeFactory 实现shapeFactoryImp
7,类名
类名和对象名应该是名词或者名词短语 如Customer, Wiki Page,Account,和AddressParser,避免message,Info, Processor,Data这样的类名
8,方法名
方法名应该是动词或者动词短语,如postPayment(),deletePage()和save(),
9,避免使用俚语和方言
10,每个概念对应一个单词
给每个抽象概念选择一个词语,并且从头到尾只用这个词语表达一个意思
11,避免使用双关语
12,尽量使用计算机科学的术语,算法名称,模式名称,数学术语
13,添加必要的语境