布尔检查'if'条件

时间:2010-11-26 05:20:56

标签: java coding-style

哪一个是更好的Java编码风格?

boolean status = true;
if (!status) {
    //do sth
} else {
    //do sth
}

if (status == false) {
    //do sth
} else {
    //do sth
}

10 个答案:

答案 0 :(得分:26)

我建议您这样做:

if (status) {
    //positive work
} else {
    // negative work
}

==测试虽然显然是多余的,但也存在单个=拼写错误的风险,这会导致分配。

答案 1 :(得分:21)

当然是前者。后者是多余的,只是表明你没有很好地理解布尔的概念。

还有一个建议:为boolean变量选择其他名称。根据{{​​3}}:

  

前缀应该用于布尔变量和方法。

     

isSetisVisibleisFinished,   isFoundisOpen

     

这是命名约定   使用了boolean个方法和变量   由Sun提供Java核心软件包。

     

使用is前缀解决了一个常见问题   选择错误的布尔名称的问题   例如statusflagisStatus或   isFlag根本不合适,而且   程序员被迫选择更多   有意义的名字。

     

boolean变量的Setter方法   必须设置前缀,如:

     

void setFound(boolean isFound);

     

有一些替代方案   is前缀更适合某些人   的情况。这些是hascan和   should前缀:

boolean hasLicense();
boolean canEvaluate();
boolean shouldAbort = false;

答案 2 :(得分:10)

如果你看看这个页面上的替代品,当然第一个选项看起来更好,第二个选项更加冗长。但是,如果你正在查看其他人所写的大型课程,那么详细程度可以在实现条件测试与否之间产生差异。

我离开Perl的原因之一是因为它在很大程度上依赖于标点符号,这在阅读时解释起来要慢得多。

我知道我已经在这里投票了,但我几乎总是支持更明确的代码,以便其他人可以更准确地阅读它。然后,我再也不会使用名为“status”的布尔变量。也许是成功或只是成功,但“状态”是真还是假对于随意的读者并不直观。正如您所知,我非常注重代码可读性,因为我阅读了其他人编写的代码。

答案 3 :(得分:7)

第一个,或if (status) { /*second clause*/ } else { /* first clause */ }

修改

如果确实需要第二种形式,那么if (false == status) <etc>虽然丑陋,但可能更安全(wrt typos)。

答案 4 :(得分:4)

前者。后者只是增加了冗长。

答案 5 :(得分:4)

这还取决于你如何命名变量。

当人们问“哪种做法更好”时 - 这隐含地暗示两者都是正确的,所以这只是一个更易于阅读和维护的问题。

如果您将变量命名为“status”(在示例代码中就是这种情况),我更愿意看到

if(status == false) // if status is false

另一方面,如果您已将变量命名为isXXX(例如isReadableCode),那么前者更具可读性。考虑:

if(!isReadable) { // if not readable
  System.out.println("I'm having a headache reading your code");
}

答案 6 :(得分:3)

第一个。但另外一点,以下内容也会使您的代码更具可读性:

if (!status) {
    // do false logic
} else {
    // do true logic
}

请注意,if(之间以及else语句之前还有多余的空格。

修改

如@Mudassir所述,如果使用逻辑的方法中存在 NO 其他共享代码,那么更好的样式将是:

if (!status) {
    // do false logic
}

// do true logic

答案 7 :(得分:2)

我个人对阅读的感受

if(!status) : if not status

if(status == false) : if status is false

如果你不习惯!状态阅读。我认为第二种方式没有伤害。

如果您使用“活动”而不是状态I,如果(!active)更具可读性

答案 8 :(得分:1)

第一种风格更好。虽然你应该使用更好的变量名称

答案 9 :(得分:0)

这也是更具可读性和良好做法。

if(!status){
//do sth
}else{
//do sth
}