哪一个是更好的Java编码风格?
boolean status = true;
if (!status) {
//do sth
} else {
//do sth
}
或
if (status == false) {
//do sth
} else {
//do sth
}
答案 0 :(得分:26)
我建议您这样做:
if (status) {
//positive work
} else {
// negative work
}
==
测试虽然显然是多余的,但也存在单个=
拼写错误的风险,这会导致分配。
答案 1 :(得分:21)
当然是前者。后者是多余的,只是表明你没有很好地理解布尔的概念。
还有一个建议:为boolean
变量选择其他名称。根据{{3}}:
前缀应该用于布尔变量和方法。
isSet
,isVisible
,isFinished
,isFound
,isOpen
这是命名约定 使用了
boolean
个方法和变量 由Sun提供Java核心软件包。使用
is
前缀解决了一个常见问题 选择错误的布尔名称的问题 例如status
或flag
。isStatus
或isFlag
根本不合适,而且 程序员被迫选择更多 有意义的名字。
boolean
变量的Setter方法 必须设置前缀,如:
void setFound(boolean isFound);
有一些替代方案
is
前缀更适合某些人 的情况。这些是has
,can
和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
}