part02 - 有意义的命名
规则 - 01:名副其实
- 变量、函数或类的命名,最好已经告诉你所有的大问题:
- 反例:名称 d 什么也没有说明;
int d; // elpased time in days
int elpasedTimeInDays;
规则 - 02:避免误导
- 应避免留下掩藏代码本意的错误线索;
- 应当避免使用与本意相悖的词;
- 账号 - accountList
- 除非它真的是 List 类型,不然最好不要使用,会引起错误判断;
- 建议使用
accountGroup
,bunchOfAccounts
,accounts
都比它好;
- 提防使用外形相似度较高的名称:
- 如:XYZControllerForEfficientHandingOfStrings 和 XYZControllerForEfficientStorageOfStrings;
- 小写字母
l
;
- 大写字母
O
;
规则 - 03:做有意义的区分
- 同一作用范围内两样不同的东西不能重名,所以导致有些人就随意修改,即使编译器满意,但是这样没有意义也会误导;
- 如果名称必须相异,那么其意思也应该不同;
- 以数字系列命名是没有意义的:
list1 = ['a', 'b', 'c', 'd', 'e', 'f']
list2 = []
for i in range(len(list1)):
list2[i] = list1[i]
source = ['a', 'b', 'c', 'd', 'e', 'f']
destination = []
for i in range(len(source)):
destination[i] = source[i]
规则 - 04:使用读得出来的名字
class DtaRcrd102:
pn = 'Alice'
ps = 'gril'
pi = '102'
class Customer:
personName = 'Alice'
personSex = 'girl'
personId = '102'
规则 - 05:使用可搜索的名称
- 找 MAX_CLASS_PER_STUDENT 很容易,但是找一个字母
m
就很难; m
可能是某个文件或者常量中的一部分,这时候搜索就存在障碍;
反例:
s = 0
t = []
for i in range(len(t)):
s += (t[i]*4)/5
正例:
realDaysPerIdealDay = 4
WORK_DAYS_PER_WEEK = 5
taskEstimate = []
sum = 0
for i in range(len(taskEstimate)):
realTaskDays = taskEstimate[i] * realDaysPerIdealDay
realTaskWeeks = realTaskDays / WORK_DAYS_PER_WEEK
sum += realTaskWeeks
规则 - 06:类名
- 类名和对象名应该是名词或名词短语;
- Customer、Wikipage、Account;
- 不应该是动词:
- Manager、Processor、Data 或 Info;
规则 - 07:方法名
- 方法名应该是动词或动词短语;
- postPayment、deletePage、save;