-2

我的问题可能很奇怪,甚至没有必要。总是满足if语句中的条件并省略else片段 1会造成任何伤害吗?

if (condition 1) {

    // code here

    if (condition 2) {

        // code here

    }
}

或者,片段 2更好吗?

if (condition 1) {

    // code here

    if (!condition 2) {
        return;
    }

    else {

        // code here

    }
}
4

5 回答 5

1

如果您只想在条件不成立时运行某些代码,则必须添加 else 或 else if。下面是一个例子:

if (condition) {
     a=5;
}
else {
     a=8;
}

如果条件为真 -> a=5,如果不是,a=8。

if (condition) {
     a=5;
}
a=8;

a=8 在所有情况下。

于 2013-10-11T11:43:52.847 回答
0

当涉及到源代码的可读性时,有两条规则(它们(怎么可能有任何不同)相互冲突):

  • 测试一个真实路径中的条件,使用else(如果需要处理)处理另一种情况。
  • 测试积极的条件,而不是消极的条件。
于 2013-10-11T11:43:49.533 回答
0

嗯...首先。如果您始终满足 if 语句,则根本不需要 if 语句。关于具有实际上可能“失败”的 if 语句,您不需要 else 语句,除非如果您检查的语句是错误的,则应该发生一些特定的事情。

所以简而言之......你不必把它放在“只是因为”。

于 2013-10-11T11:40:28.577 回答
0

我可以看到始终包含else-statement 的一个优势是防止愚蠢的错误,例如

if (ptr != 0);
    ptr = ptr->next;

鉴于您不能使用-branch elsefor while- 或for-loops 之类的东西,但这是一种不完整的方法。

于 2013-10-11T12:01:49.163 回答
0

一些指南(例如在汽车行业)指定必须包含 else 语句,即使它是空的。在这种情况下,您可以在 else 语句中进行注释,指定您实际上不想在其中执行任何操作。

我能想到的一个优点就是这个。如果你有:

if (condition)
    doSomething();
doSomethingElse();

在这种情况下,if 案例将执行 doSomething(),else 案例将执行 doSomethingElse()。如果您现在像这样修改代码:

if (condition)
    doSomething();
doSomethingElse();
doAnother();

你认为会发生什么?else 案例将只执行 doSomethingElse()。doAnother() 将在两种情况下(if 和 else)都执行。但这真的是你想要的吗?也许是,也许不是。也许你想要类似的东西:

if (condition) 
{
    doSomething();
}
else
{
    doSomethingElse();
    doAnother();
}

在这种情况下,doAnother() 显然属于 else 情况。

因此,当您的代码经常更改或由多个开发人员修改时,请明确指定 else。它确实使事情变得更清晰,并避免了代码中的错误/错误。

于 2013-10-11T11:55:02.727 回答