我们都知道布尔类型所表达的关系是"真"和"假"的关系。似乎大部分人对于布尔变量命名并不重视,弄出了很多奇怪的变量。今天我们就讨论下怎么命名好的布尔变量。
要想定义一件事物,你必须要明白和理解该事物才能做出定义。那么我们评判该定义是否恰当甚至是好坏,我们可以用该定义是否恰当表达出该事物。
变量命名也是一样,我们需要准确知道该变量表达的是什么。如果变量的命名和其表达出来的东西不一致,那么就是一个糟糕的命名。
以布尔命名为例,Qt君列出一些好的命名和不好的命名,供大家比较:
status
,flag
,target
,a
,b
。
这些命名不能准备表达出事物的真假状态。status
和flag
相信很多人会用,它们应该是一种状态或标记状态。状态有很多种,固体状态,液体状态,气体状态,还是表示某个状态是true就表明该状态OK,又或者该状态时false就表明该状态没有任何错误,对于status
和flag
用于布尔变量命名根本表达不出真假关系。
done
,error
,success
,ok
,found
,enable
,available
,visible
。
done
用来表明事情是否已经完成。error
用来表明有无错误发生。success
或ok
用来表明某些操作是否成功。found
用来表明某个值是否找到。targetAvailable
: target
名词过于含糊,应该准确命名比如:fileAvailable
。is
开头修饰的布尔变量,如:isError
,本身error
变量就能表达出有无错误发生的状态,降低了可读性。if (isError) {
...
}
if (error) { // 直接表达即可
...
}