我有以下几行代码:
if(
checker.this()==false ||
checker.that()==false ||
checker.what()==true||
checker.cool()==false ||
checker.damm()==true
(...)
)
{
option = Option.FALSE;
}
Run Code Online (Sandbox Code Playgroud)
必须执行大约20次检查.我发现这是最具"视觉可容忍"的形式,if用多个OR序列来写这个,但我还不满意.这有编码标准吗?
谢谢.
Boz*_*zho 11
foo==false 应该更好地写 !foo
可能,如果采用单独的方法,你可以移动它:if (checker.complexConditionMet())或者if (complexConditionMet(checker)).它将提高可读性.
DJC*_*rth 11
与此相关的编码标准最接近的是Steve McConnel,其权威书籍"Code Complete"建议将复杂条件考虑在他们自己的方法中,即使它们仅使用一次.这允许方法的名称来描述正在发生的事情.
if (checkValid(checker)) {...}
private boolean checkValid(Checker checker) {...}
Run Code Online (Sandbox Code Playgroud)
当然,checkValid不是一个好名字,应该用更具描述性的东西代替.在这种特殊情况下,您可能希望将check方法作为"checker"对象的一部分.
你还应该避免"something == true"和"something == false",并使用"something"和"!something".如果为布尔方法赋予适当的名称,例如"isOpen()","isEmpty()",而不是"open()"和"empty()",则此过程会有所帮助."checker.isOpen()&&!checker.isEmpty()"非常清楚.
| 归档时间: |
|
| 查看次数: |
484 次 |
| 最近记录: |