我应该使用ELSE IF吗?为了更好的表现?

时间:2018-02-18 20:54:23

标签: if-statement

新手在这里,我只是想知道我应该使用ELSE IF如下所示:

(function)
IF x==1
IF x==2
IF x==3

这就是我使用的方式,因为x不会是其他任何东西。但是,我认为如果x等于1,程序仍将运行以下代码(结果为FALSE FALSE FALSE ...)。我应该使用ELSE IF,以便它不必运行其余的吗?这会有助于表现吗?

为什么我不想使用ELSE IF?因为我希望每个代码块(IF x == n)都相似,不喜欢这个

IF x==1
ELSE IF x==2
ELSE IF x==3

(每个ELSE IF块都是其上方块的一部分)

但程序会反复调用此函数,所以我担心性能或延迟。

3 个答案:

答案 0 :(得分:1)

简答:如果您不需要同时处理多个条件可能属实的情况,始终使用

if (condition) {
    //do something
}
else if (other_condition) {
    //do something else
}
else { //in all other conditions
    //default behaviour
}

答案很长:

  1. 正如其他人已经说过的那样,性能并不是一个大问题(除非您正在编写针对巨型企业的企业软件的生产代码)。 如果性能确实至关重要,您应该采用上述格式。所以这可能是一个习惯的好习惯/习惯(特别是如果你现在开始你的代码之旅)
  2. Switch可以替代,但由于你没有指定语言,我会避免建议它,因为在某些语言中,它默认为fall-through(这可能会让你在第一时间开始让你更加困惑)
  3. 表现可能不是一个问题。但请记住,logic errors是编程的巨大敌人,如果你实际上没有需要它能够匹配多个案例。请考虑以下情况。

    if (x == 1) {
        x = x + 1
    }
    if (x == 2) {
        x = x + 2
    }
    if (x >= 3) {
        print("Error: x should only be 1 or 2!")
    }
    
  4. 在这种情况下,如果x >= 3您会警告错误值,您会发现,因为您只记得处理值 1 或的 2 即可。实际上,即使x的值 1 2 (您认为 有效)将打印相同的错误消息!。这是因为您允许检查多个条件的可能性以及每次执行相应的代码块。请注意,这是过度简化的示例。有时,这可能是一个巨大的痛苦!特别是如果您与他人合作并共享代码,并且您的目标是使用可扩展和可维护的代码。

    总而言之,如果您没有考虑过,请不要使用更简单的解决方案。转而使用完整的结果并考虑所有可能的结果(通常是最差情况情景,甚至未来功能和代码)。

    最诚挚的问候!

答案 1 :(得分:0)

如果要测试的值在一次调用中能够匹配多个,那么测试每个(IF,IF,...)。
如果预计该值只匹配一个,则检查它并在找到时停止(IF,ELSE IF,ELSE IF ......)。
如果预期值是已知集合之一,则转到右侧(切换)。

答案 2 :(得分:0)

假设这是javascript,但这应该与其他任何内容大致相同。

if语句中的代码只有在您提供的条件为真时才会运行。例如,如果您声明x = 1,我们可以使用以下内容:

function something() {
if(x == 1) {
  //do this
}
if(x == 2) {
  //do that
}
if(x == 3) {
  //do this and that
}

将运行第一个块,忽略其他所有块。如果第一个else-if语句为false,则会运行if语句。

function something() {
if(x == 1) {
  //do this
}
else if(x == 2) {
  //do that
}

因此,如果x == 1为false,则会评估下一个语句。

至于表现,差异对你来说太少了。如果您需要测试许多条件,可能需要查看switch statement.