if语句和if-else语句的安全性

时间:2013-10-11 11:37:16

标签: c++ performance compiler-construction

我的问题可能很奇怪甚至没有必要。在 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

    }
}

5 个答案:

答案 0 :(得分:1)

如果你想只在条件不正确的情况下运行一些代码,你可以添加其他内容,否则就是。 下面是一个例子:

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

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

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

a = 8在所有情况下。

答案 1 :(得分:0)

嗯......第一个。如果您总是满足if语句,则根本不需要if语句。关于拥有一个实际上可能“失败”的if语句,你不需要else语句,除非你正在检查的语句是假的,否则会发生某些特定的事情。

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

答案 2 :(得分:0)

当涉及到源代码的可读性时,有两个规则(冲突中有哪些(可能有什么不同)):

  • 测试一个真实路径中的条件,使用else处理另一个案例(如果需要处理的话)。
  • 测试积极的条件,而不是否定。

答案 3 :(得分:0)

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

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

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

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

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

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

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

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

答案 4 :(得分:0)

我能看到的一个优势就是总是包含else - 声明,以防止像

这样的愚蠢错误
if (ptr != 0);
    ptr = ptr->next;

鉴于你不能拥有else - while - 或for - 分支之类的东西,但这是一种不完整的方法。