If statement 如果需要,我应该用别的吗?为了更好的表现?

If statement 如果需要,我应该用别的吗?为了更好的表现?,if-statement,If Statement,这里是新手,我只是想知道我是否应该使用ELSE IF来执行以下操作: (function) IF x==1 IF x==2 IF x==3 这就是我正在使用的方法,因为x不会是其他任何东西。但是,我认为如果x等于1,程序仍将运行以下代码(结果为FALSE…)。如果是这样的话,我应该使用ELSE吗?它不必运行其余的?这对表演有帮助吗 如果有,我为什么不想用别的?因为我希望每个代码块(如果x==n)相似,不像这样: IF x==1 ELSE IF x==2 ELSE IF x==3 (如果块是其

这里是新手,我只是想知道我是否应该使用ELSE IF来执行以下操作:

(function)
IF x==1
IF x==2
IF x==3
这就是我正在使用的方法,因为x不会是其他任何东西。但是,我认为如果x等于1,程序仍将运行以下代码(结果为FALSE…)。如果是这样的话,我应该使用ELSE吗?它不必运行其余的?这对表演有帮助吗

如果有,我为什么不想用别的?因为我希望每个代码块(如果x==n)相似,不像这样:

IF x==1
ELSE IF x==2
ELSE IF x==3
(如果块是其上方块的一部分,则各块之间)


但是程序会重复调用此函数,因此我担心性能或延迟。

如果被测试的值预计能够在一次调用中匹配多个值,则测试每个值(如果,如果…)。
如果期望值仅与一个匹配,则检查该值并在找到它时停止(If、ELSE If、ELSE If…。

如果期望值是已知集合中的一个,则直接转到该集合(开关)。

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

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

function something() {
if(x == 1) {
  //do this
}
if(x == 2) {
  //do that
}
if(x == 3) {
  //do this and that
}
将运行第一个块,而忽略其他所有内容。如果第一个
if
语句为false,则将运行
else if
语句

function something() {
if(x == 1) {
  //do this
}
else if(x == 2) {
  //do that
}
因此,如果
x==1
为false,则将计算下一条语句


至于表现,差别太小,你根本不在乎。如果您有许多条件需要测试,您可能需要查看一个

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

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

  • 正如其他人已经指出的,性能并不是一个真正的大问题(除非您正在为面向大型企业的企业软件编写生产代码)但是,如果性能确实非常重要,您还是应该选择上述格式。因此,这可能是一个很好的实践/习惯(尤其是当您现在开始编写代码时)
  • Switch可能是一种替代方法,但由于您尚未指定语言,我将避免建议您使用它,因为在某些语言中,它默认为(这可能会让您从一开始就了解到这一点,并让您更加困惑)
  • 性能可能不是一个问题。但请记住,这是编程的一个巨大敌人,如果您实际上不需要它来匹配多个情况,那么您的解决方案很容易遇到它们。考虑下面的情况。

    if (x == 1) {
        x = x + 1
    }
    if (x == 2) {
        x = x + 2
    }
    if (x >= 3) {
        print("Error: x should only be 1 or 2!")
    }
    
  • 在这种情况下,如果
    x>=3
    ,您会警告值中的错误,因为您只考虑处理值12。实际上,即使x的值是12(您认为有效),也会打印出相同的错误消息。这是因为您允许检查多个条件,并且每次都执行相应的代码块。请注意,这是一个过于简化的示例。有时,这可能是一个巨大的痛苦!特别是如果您与其他人协作,共享代码,并且您的目标是可消耗和可维护的代码

    总之,如果你没有仔细考虑,不要使用更简单的解决方案。取而代之的是完整的,并考虑所有可能的结果(通常是最坏的情况场景,甚至未来的功能和代码)


    致以最良好的祝愿

    您还应该标记您的问题,以指示您正在使用的语言,但一般来说,担心这种事情就是我们所说的“过早优化”——如果您确实获得了任何性能提升,那么它们可能在几乎所有正常编程场景中都是不相关的。(我做性能非常敏感的游戏编程,我从不担心这一点…)是的,编译器将检查所有
    IF
    s,因为它们彼此独立
    IF-ELSE
    会更好,我想。。。顺便问一下,为什么不使用
    开关
    ?我认为您应该在很大程度上关注可读性和维护。以最能表达您的意图和问题域的方式编写代码,并且最不可能绊倒未来的维护人员。让编译器担心优化代码。