如果我只是想检查,如果事情是不可能或不(即,我将不使用的东西像if(possible)
),我应该命名布尔notPossible
和使用if(notPossible)
或者我应该命名为possible
和使用if(!possible)
呢?命名布尔
可以肯定的是,如果我还要检查它是否为possible
,我会命名布尔可能并使用if(possible)
以及else
,对不对?
如果我只是想检查,如果事情是不可能或不(即,我将不使用的东西像if(possible)
),我应该命名布尔notPossible
和使用if(notPossible)
或者我应该命名为possible
和使用if(!possible)
呢?命名布尔
可以肯定的是,如果我还要检查它是否为possible
,我会命名布尔可能并使用if(possible)
以及else
,对不对?
我倾向于在这里的积极性方面犯错,并使用possible
。这意味着有人不能再写一些代码,这样做...
if (!notPossible)
这是不可读的。
两个否定......这意味着它完全*不可能正确吗? – mpen 2010-03-26 21:38:37
或者你可以更进一步,写下:'if(!notImpossible)' – 2010-03-26 21:47:03
或者如果我们使用Alex的行话if(!lacksImpossibility)' – 2010-03-26 21:49:59
您应该使用isPossible
。
类似notPossible
等布尔值的负面名字是一个非常糟糕的主意。您可能最终不得不编写诸如if (!notPossible)
之类的代码,这会使代码难以阅读。不要这样做。
无论哪个更容易阅读您的特定应用程序。只要确定你没有结束“if(!notPossible)”。
我认为最好避免在变量名中使用负数,这样可以避免if(!notPossible)的双重否定。
我推荐使用isPossible
。只要命名布尔变量,就可以使用'is'(或者'has')。这是合乎逻辑的,因为你想知道是否有可能,对吧?
如果你想找出是否有什么是不可能的? – wrongusername 2010-03-26 21:40:28
你总是可以在'isPossible'上放一个'!',但是你不能把'not'从'notPossible'中取出。 – tloflin 2010-03-26 22:15:21
我喜欢的名字一致短动词前缀,如is
或has
布尔值,我会找到一个not
前缀独特而棘手的精神“解析”(所以,我怀疑,代码会很多读者,无论是否意识到这种感觉---) - 所以,我要么命名变量isPossible
(和使用!isPossible
),或只是命名变量isImpossible
(许多形容词有这样的方便的反义词,并为前缀has
你可以使用前缀lacks
来形成整个事物的反义词;-)。
我同意负面评论布尔人是一个坏主意,但有时可能以正面的方式重新构建条件。例如,您可以使用pathIsBlocked而不是cannotProceed,或者使用isImortal而不是isNotAbleToDie。
我通常会尝试命名我的标记,以便它们在使用它们时尽可能精确地读取。这意味着尝试命名它们,以便在使用它们时不会被否定。
我知道有些人坚持说所有的名字都是正面的,这样人们就不会混淆名字和头脑中的否定。对于类接口中的布尔值来说,这可能是一个很好的策略。但如果它的本地到一个单一的源文件,并且我知道所有的电话都会否定它,我宁可看到if (impossible && ...)
比if (!isPossible && ...)
。
您应该将其命名为准确存储的内容。如果您存储的是否有可能,请将其命名为isPossible
。如果您要存储是否不可能将其命名为isImpossible
。
无论哪种情况,如果您需要检查两种情况,您可以使用else
。
从你的描述似乎对你更重要的是要检查不可能的,所以我会跟isImpossible
去:
if(isImpossible)
{
// ...
}
else
{
//...
}
我宁愿保持在正的形式布尔值(isAllowed,可能授权),除非有一个很好的理由来反转逻辑。 它可以帮助我保持一致的约定,并且我发现!在很多情况下可能更容易阅读(不可能)(!不可能?)。所有这一切,我通常也试图避免需要/使用布尔标志。 – 2010-03-26 21:35:15