【发布时间】:2013-07-26 06:04:42
【问题描述】:
我经常这样构建我的代码:
public void doSomething() {
if (!condition1) {
println("problem 1");
return;
}
if (!condition2) {
println("problem 2");
return;
}
if (!condition3) {
println("problem 3");
return;
}
// code to run if
// everything is OK
}
而不是像这样嵌套:
public void doSomething() {
if (condition1) {
if (condition2) {
if (condition3) {
// code to run if
// everything is OK
}
else {
println("problem 3");
}
}
else {
println("problem 2");
}
}
else {
println("problem 1");
}
}
两者相比有什么好处吗?一个比另一个更“正确”吗?谢谢!
【问题讨论】:
-
public void doSomething() { if (condition1 && condition2 && condition3) { // 运行代码 if // 一切正常 } else if(!condition1) { println("problem 1"); } else if (!conditoin2) { println("问题 2"); } else { println("问题 3"); } }
-
更改分支结构不会导致性能提升 IMO。与这种微优化相比,更关注可读性。在您的代码中搜索一些主要的优化机会。
-
@Juvanis,这两个示例将产生完全相同的输出。你在说什么?
-
@Veera,这将导致条件被多次评估。我正在处理适度昂贵的条件操作,所以这将是一个坏主意。如果 condition1 为真,我只想评估 condition2。
-
@Juvanis 请在此处查看此代码产生相同输出的证据:ideone.com/LGTgP3
标签: java performance if-statement conditional nested