几年前,我正在为条件检查编写代码,如下所示
boolean isTesting ==false;
if(isTesting==false)
有一天,一位资深人士来到我面前告诉我这不是一种有效的方法。然后向我解释了这件事。我听说但我猜没有听。 所以我开始写下面的内容而不知道它的目的。
if(false==isTesting)
现在突然好奇心来到这个主题再次真的很有效!?哪一个是最佳方式?
if(isTesting==false)
?
if(false==isTesting)
?
if(!isTesting)
?
同样怀疑if(null==value)
和if(value==null)
。请澄清
提前致谢。
答案 0 :(得分:4)
if (isTesting == false)
有点危险,因为你可以忘记=
符号并写
if (isTesting = false)
编译(它为isTesting
指定false,并计算为false)。
if (false == isTesting)
避免了这个问题,因为忘记=
会使代码无效。但它过于冗长,并将已经是布尔值的布尔值与另一个布尔值进行比较,以生成布尔值。所以
if (!isTesting)
做同样的事情,表明你理解booelan表达是什么,并且没有忘记=
的风险。你当然应该更喜欢这种方式。
写作
if (null == value)
是不必要的,因为忘记等于
if (value = null)
会导致代码无效。 value = null
不是布尔值(除非值为Boolean
类型)。所以请使用value == null
,这更自然。
无论如何,除非您经常切换到使用=
而非==
进行比较的语言,否则通常不会忘记使用==
代替=
。几天后它变得自然。当您在布尔表达式中使用=
而不是==
时,良好的IDE和代码质量工具会发出警告。
答案 1 :(得分:1)
其中最好的是if (!isTesting)
,因为它最简单,最干净。
其他两个选项中if (value==null)
是
更自然,所以我建议使用那个。
答案 2 :(得分:0)
在功能上它们都是等价的。
也就是说,在==左侧写常量/文字的建议是由于不可能意外地写=(赋值)而不是==(相等)。由于你无法分配常量/文字,如果你意外地写了=。
,编译器就会抱怨简短,简洁!表达式没有这样的问题,而且表达式必须评估为布尔值(其他一切都是编译错误)。所以简单的if(boolean)/ if(!boolean)通常被认为是最合乎逻辑的习语。