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

用Java编写布尔表达式的首选方法是什么,java,coding-style,boolean,Java,Coding Style,Boolean,我总是这样写布尔表达式: if (!isValid) { // code } 但我的新雇主坚持以下风格: if (false == isValid) { // code } 我更喜欢第一种风格,因为它更适合我阅读。看到第二种风格是很不寻常的 有些人可能更喜欢第二种方法而不是另一种方法的一个原因是: if (isValid == false) { ... } 对于后者,您意外地编写了一个=而不是=,然后您将分配给isValid而不是测试它,但是使用常量首先会得到一个编译错误 但是根据

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

if (!isValid) {
  // code
}
但我的新雇主坚持以下风格:

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

我更喜欢第一种风格,因为它更适合我阅读。看到第二种风格是很不寻常的

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

if (isValid == false) { ... }
对于后者,您意外地编写了一个
=
而不是
=
,然后您将分配给isValid而不是测试它,但是使用常量首先会得到一个编译错误


但是根据你的第一个建议,这个问题甚至不是问题,因此这是选择第一个的另一个原因。

在我看来,第一个更具可读性,而第二个更为详细

我肯定会选第一个

这是几小时前的C#

false==isValid
构造是C-world的遗留,在C-world中,编译器允许您在
if
语句中执行赋值。我相信Java编译器会在这种情况下警告您


总的来说,第二个选项过于冗长。

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

第二种风格不需要你自己否定这个表达(这可能比“isValid”复杂得多)。但是,如果忘记键入two='s,那么编写“isValid==false”可能会导致意外赋值,因此习惯用法是将不可能是右值的内容放在右边


第一种风格似乎在那些知道自己在做什么的人中更受欢迎。

绝对是第一种。第二种是对表达式和值的本质缺乏理解,作为编码标准的一部分,这意味着雇主希望雇佣非常不称职的程序员——这不是一个好兆头。

每个人都认识到这一点:

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

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

我将尝试一个综合以上所有答案的综合答案

出于以下原因,第一种风格绝对是首选:

  • 它比较短
  • 它更具可读性,因此更容易理解
  • 它被更广泛地使用,这意味着读者将更快地识别模式
  • “false==…”而不是“…==false”是另一种违反自然规律的行为,这让读者认为“有什么奇怪的事情我需要注意吗”,而实际上并没有

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

我只想说我二十年前在学校学过C语言,现在已经开始学习Perl和Java,而C语言的语法和

我认为(!myvar)是最流行的

我认为(myvar==false)也可以

20年来我从未见过

(false==myvar) 

我觉得你的老板在抽烟——很抱歉,但我认为这表明你的老板是一个控制狂或麻木的人。

哇,这是另一个要问未来雇主的问题。(明确地与布尔常量进行比较是愚蠢的。)我想说第二个是首选的。。。。。。。如果且仅当你是一个代码混淆者,而我更喜欢第一个,你可能想坚持你雇主的标准谢谢你的反馈。我们看看我是否能改变球队的标准,看看你在杀我。但至少这意味着我没有发疯。事实上,如果isValid是一个变量(除非isValid是final),那么这个错误就不会有编译错误。这真的很糟糕。显然,如果一个方法或表达式是有效的,那么问题就不那么严重了,但作为一种习惯……我相信这就是顺序颠倒的原因。“if(false=isValid)”是一个错误。表达式中的布尔赋值在Eclipse中不会显示任何编译器错误或警告。常规布尔赋值不会显示任何编译器错误或警告,但尝试将值赋值给内置常量“false”会显示这一点,因此排序是正确的。在旧的C代码中(我的意思是旧的),FALSE通常是一个赋值变量,可以被覆盖。