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

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

if (!isValid) { // code } 

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

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

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

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

有些人可能更喜欢第二种替代方案的一个原因:

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

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

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

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

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

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

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

几个小时前就讨论了C#。

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

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

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

我肯定会去第一个

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

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

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

  • 它更短
  • 它更具可读性,因此更容易理解
  • 它被更广泛地使用,这意味着读者将更快地识别模式
  • “false == …”而不是“… == false”是另一种违反自然秩序的行为,这使得读者认为“有什么奇怪的事情发生在我需要注意的地方”,当时有“T。

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

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

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

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

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

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

20年来,我从未见过

 (false==myvar) 

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