一尘不染

为什么我们在主体是一个return语句时使用if,else if而不是多个if块

java

我一直习惯使用if,else-if语句,而不是多个if语句。

例:

int val = -1;
if (a == b1) {
   return c1;
} else if (a == b2) {
   return c2;
} ...
...
} else {
   return c11;
}

与示例2相比如何?

if (a == b1) {
   return c1;
}
if (a == b2) {
   return c2;
}
....

if (a == b11) {
   return c11;
}

我知道功能上它们是相同的。但是,如果不是,则是否是最佳做法?当我指出他可以不同地构造代码库以使其更整洁时,它是由我的一位朋友提出的。对我来说这已经是一种习惯,但是我从来没有问过为什么。


阅读 412

收藏
2020-09-08

共1个答案

一尘不染

if-elseif-else一旦找到正确的语句,它们就会停止进行比较。if-if-if做每个比较。第一个是更有效的。

编辑:
在注释中已指出您return在每个if块中都做了一个。在这些情况下,或者在控制权将离开方法的情况下(例外),执行多个if语句和执行if- elseif-else语句之间没有区别。

但是,if-elseif-else无论如何,最佳做法是使用。假设您更改了代码,以免您return在每个if块中都没有执行a
。然后,要保持效率,您还必须更改if-elseif-else成语。if-elseif- else从一开始就拥有它可以节省以后的编辑工作,并且对于阅读代码的人来说更加清楚(见证我刚才对代码的略读而给您带来的误解!)。

2020-09-08