jas*_*ing 17 java coding-style
哪一个是更好的Java编码风格?
boolean status = true;
if (!status) {
//do sth
} else {
//do sth
}
Run Code Online (Sandbox Code Playgroud)
要么:
if (status == false) {
//do sth
} else {
//do sth
}
Run Code Online (Sandbox Code Playgroud)
akf*_*akf 26
我建议你这样做:
if (status) {
//positive work
} else {
// negative work
}
Run Code Online (Sandbox Code Playgroud)
这些==测试虽然显然是多余的,但也存在一个=错字导致分配的风险.
mis*_*tor 21
当然,前者.后者是多余的,只是表明你没有很好地理解布尔的概念.
还有一个建议:为boolean变量选择一个不同的名称.根据这个Java风格指南:
是前缀应该用于布尔变量和方法.
isSet,isVisible,isFinished,isFound,isOpen这是
booleanSun用于Java核心包的方法和变量的命名约定 .使用
is前缀解决了选择错误的布尔名称的常见问题,如status或flag.isStatus或者isFlag根本不适合,程序员被迫选择更有意义的名字.
boolean变量的setter方法必须设置前缀,如下所示:
void setFound(boolean isFound);
is在某些情况下,前缀有一些替代方案可以 更好地适应.这些has,can和should前缀:Run Code Online (Sandbox Code Playgroud)boolean hasLicense(); boolean canEvaluate(); boolean shouldAbort = false;
dj_*_*ult 10
如果你看看这个页面上的替代品,当然第一个选项看起来更好,第二个选项更加冗长.但是,如果你正在查看其他人写的大型课程,那么详细程度可以在实现条件测试与否之间产生差异.
我离开Perl的原因之一是因为它在很大程度上依赖于标点符号,这在阅读时要慢得多.
我知道我在这里投票,但我几乎总是站在更明确的代码旁边,以便其他人可以更准确地阅读它.然后,我再也不会使用名为"status"的布尔变量.也许是成功或只是成功,但"状态"是真还是假对于随意的读者并不直观.正如您所知,我非常注重代码可读性,因为我阅读了其他人编写的代码.
第一个,或 if (status) { /*second clause*/ } else { /* first clause */ }
编辑
如果真的需要第二种形式,那么if (false == status) <etc>,虽然丑陋,可能更安全(wrt拼写错误).
这实际上还取决于您如何命名变量。
当人们问“哪个是更好的实践”时,这隐含着两者都是正确的,所以这只是哪个更容易阅读和维护的问题。
如果您将变量命名为“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");
}
Run Code Online (Sandbox Code Playgroud)