在Java中编写布尔表达式的首选方法是什么

时间:2010-03-09 13:43:08

标签: java coding-style boolean

我总是写这样的布尔表达式:

if (!isValid) {
  // code
}

但我的新雇主坚持以下风格:

if (false == isValid) {
  // code
}

首选一种风格,还是标准风格?

9 个答案:

答案 0 :(得分:10)

我更喜欢第一种风格,因为我更自然地阅读。看到第二种风格是非常不寻常的。

有些人可能更喜欢第二种选择而不是另一种选择的一个原因:

if (isValid == false) { ... }

是后者你不小心写了一个=而不是==然后你分配给isValid而不是测试它但是先用常量你会得到一个编译错误。

但是你的第一个建议是这个问题甚至不成问题,所以这是另一个选择第一个问题的理由。

答案 1 :(得分:8)

绝对是第一个。第二个背叛了对表达和价值观的本质缺乏理解,作为编码标准的一部分,它暗示雇主希望雇用非常不称职的程序员 - 而不是一个好兆头。

答案 2 :(得分:8)

每个人都认识到这个片段:

if (isValid.toString().lenght() > 4) {
   //code
}

我认为你的第二个例子看的是同一个方向。

答案 3 :(得分:4)

几小时前,C#是discussed

false == isValid构造是来自C-world的剩余构造,其中编译器允许您在if语句中进行分配。我相信Java编译器会在这种情况下警告你。

总的来说,第二种选择太冗长了。

答案 4 :(得分:2)

IMO第一个更易读,第二个更冗长。

我肯定会去第一个

答案 5 :(得分:2)

您正在评估变量,而不是false,因此从可读性的角度来看,后者是不正确的。所以我个人会坚持第一个选择。

答案 6 :(得分:2)

我将在这里尝试一个包含所有上述答案的综合答案。

第一种风格绝对是首选,原因如下:

  • 它更短
  • 它更易读,因此更容易理解
  • 它被更广泛地使用,这意味着读者将更快地识别模式
  • “false == ...”而不是“... == false”是另一种违反自然秩序的行为,这使得读者认为“我有必要注意一些奇怪的事情”,什么时候没有。

唯一的例外是变量是布尔值而不是布尔值。在这种情况下,第二个是与第一个不同的表达式,当isValid为null时以及当它为Boolean.FALSE时,求值为false。如果是这种情况,可以使用第二个。

答案 7 :(得分:1)

第二种风格并不要求你自己否定表达(这可能比“isValid”复杂得多)。但是如果你忘记输入两个='s,那么写“isValid == false”可能会导致无意识的分配,因此成语就是把右边的东西放在一个不能成为右值的位置。

第一种风格似乎是那些知道自己在做什么的人的首选。

答案 8 :(得分:0)

我只想说我二十年前在学校学过C并且已经转向Perl和Java,现在C#都有相同的语法和...

我认为(!myvar)是最受欢迎的

我认为(myvar == false)也很好

20年来,我从未见过

(false==myvar) 

我认为你的老板正在抽烟 - 我很抱歉,但我认为这是一个标志,你的老板是某种控制狂或者麻木。