if(isTesting == false)? if(false == isTesting)? if(!isTesting)?这是最好的编程方式

时间:2014-08-26 13:51:21

标签: java

几年前,我正在为条件检查编写代码,如下所示

boolean isTesting ==false;
if(isTesting==false)

有一天,一位资深人士来到我面前告诉我这不是一种有效的方法。然后向我解释了这件事。我听说但我猜没有听。 所以我开始写下面的内容而不知道它的目的。

if(false==isTesting)

现在突然好奇心来到这个主题再次真的很有效!?哪一个是最佳方式?

if(isTesting==false)if(false==isTesting)if(!isTesting)

同样怀疑if(null==value)if(value==null)。请澄清

提前致谢。

3 个答案:

答案 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)通常被认为是最合乎逻辑的习语。