我们都知道布尔类型所表达的关系是"真"和"假"的关系。似乎大部分人对于布尔变量命名并不重视,弄出了很多奇怪的变量。今天我们就讨论下怎么命名好的布尔变量。
要想定义一件事物,你必须要明白和理解该事物才能做出定义。那么我们评判该定义是否恰当甚至是好坏,我们可以用该定义是否恰当表达出该事物。
变量命名也是一样,我们需要准确知道该变量表达的是什么。如果变量的命名和其表达出来的东西不一致,那么就是一个糟糕的命名。
以布尔命名为例,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) { // 直接表达即可
...
}