1.变量命名的注意事项
1)可理解性
变量要望文知义,看到这个变量不用看其他的代码就知道这个变量表示什么意思
好的变量命:currentDate
, heartRate
糟糕的变量名:newButton
, peopleCnt
2)可读性
变量不仅要可理解,还要容易读,要是变量像这样:numberOfShitsInChinaMansFootballNationalTeam
,太长了,会疯掉的
研究发现,变量名的长度在8~20各字符的长度时是易于调试的,因此上面的变量可以改为numShitsInTeam
, 在可理解性和可读性之间做一个平衡
2.变量命对作用域的影响
短的变量名也不一定不好,像for i in healthInfos:
,i代表一个临时的数据,作用域仅限制在这个for循环里面
研究表明:较长的名字适用于很少用到的变量或全局变量,而较短的名字适用于局部变量或者循环变量。
不过,短的变量命常常会带来一些麻烦,因此,作为一项防御式编程策略,应尽量避免使用短的变量名
3.变量名中的计算值限定词
代码里经常会出现表示计算结果的变量,总额、平均值、最大值、最小值等,要用total
,average
,max
,min
等限定词,那么请记住把限定词加在名字的最后。
这种方式的优点在于:
1)突出主要含义
对于revenueAverage
,阅读者第一眼看到的是revenue,就知道这个变量表示的是收益;如果用averageRevenue
,阅读者第一眼看到的是average
,只知道这是平均值,是什么的平均值呢?不知道!这是因为在average
和revenue
里面,revenue
是主体,表示主要含义,average
只是修饰词,因此把主体放在前面,更有利于理解
2)增加一致性
如果之后还有类似的变量revenueTotal
, revenueMax
, revenueMin
,expenseTotal
, expenseMax
,就会显得很工整
4.为特定类型的数据命名
1)为for循环中的变量命名
对于python的for循环,不要使用i
,info
等不表示具体含义的临时变量,因为这样阅读者无法根据变量名猜测变量的意义
好的示例:for health_info in health_infos
糟糕的示例:for i in health_infos
其中health_infos表示一个存储用户健康数据的数组,for health_info in health_infos
阅读者一眼就能看出来health_info代表某一个用户的健康数据
2)为状态变量命名
不要使用单纯的flag来命名状态变量
CHECKLIST
1)变量名完整并准确地表达了变量所代表的含义吗?
2)变量名反映了现实世界的问题而不是编程语言方案吗?
3)变量名是否过长?
4)如果有计算限定词,它被放到变量名的后面了吗?
5)for循环中的变量名能表示具体含义吗?
6)命名规则能够区*部数据、类的数据和全局数据吗?
7)所有单词的缩写方式一致吗?