0

通常这样做是否更好/更快:

if (condition) return a
else if (condition2) return b
else return c

或者

if (condition) return a
if (condition2) return b
return c

他们都做同样的事情,但我很好奇在比较这两个片段时是否需要记住其他后果

4

6 回答 6

3

Since there is always the same amount of code executed, it won't make any difference. In terms of readability of the code I strongly suggest to use the "else" version. In this version you directly see (because of the "else") that the first condition is not true in order to execute the else if branch. In the second example you could miss the "return" when reading and be confused why the code checks for several conditions.

于 2012-06-18T18:26:12.460 回答
1

选择最具可读性和可维护性的内容。您可能不会看到两个版本的代码之间有任何区别,因为编译器通常擅长为您进行此类分支优化。因此,在这两种情况下,生成的编译代码可能基本相同。让编译器来做这种微优化。

于 2012-06-18T18:35:23.993 回答
1

差异可以忽略不计/无。

在对代码进行性能调整时,老实说,我会寻找其他地方。

于 2012-06-18T18:24:33.693 回答
0

老实说,我尝试过测试,并没有发现任何区别。

我认为这是个人偏好而不是其他任何东西,第二个是更少的代码编写......

于 2012-06-18T18:19:23.023 回答
0

在这种情况下没有区别,但以下示例有所不同:

    if (condition) do work1
    else if (cond2) do work2
    else if (cond3) do work3
    else do work4
    more work

如果第一个条件为真,则程序将移至“更多工作”语句并且不测试其他条件,但在随后的所有条件中,即使第一个条件为真(其他条件除外):

    if (condition) do work1
    if (cond2) do work2
    if (cond3) do work3
    else work4

    more work

这是唯一的区别,除非有数千个 if 语句,否则它不会对速度产生太大影响。

两者都有不同的用例:

Run first one where you want to stop as soon as a true condition is encountered.

Run second one when you want to test more conditions even after you have found
a true condition.
于 2012-06-18T18:24:31.150 回答
-1

ELSE IF 的意思是,如果前面的 IF 语句不正确,则尝试“this”语句。根据我的经验,如果您只需要检查一种情况,IF 的工作速度要快得多,而且非常棒。ELSE IF 更适合不同的条件。

于 2012-06-18T18:34:36.987 回答