首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用“if/else if/else”与"if/else{if/else}“

使用“if/else if/else”与"if/else{if/else}“
EN

Stack Overflow用户
提问于 2011-04-02 04:03:56
回答 4查看 506关注 0票数 2

我发现自己经常使用这样的模式:

代码语言:javascript
复制
if (a > b) {
    foo();
}
elseif (c > d) {
    bar();
}
else {
    baz();
}

这里的要点是,除非您仔细遵循程序逻辑,否则第二个条件与第一个条件没有明显的联系。这是一件非常糟糕的事情吗?上面的表述是不是更可取

代码语言:javascript
复制
if (a > b) {
    foo();
}
else {
    if (c > d) {
        bar();
    }
    else {
        baz();
    }
 }

出于可维护性的原因?有没有一种更好的模式是我完全忽略的?“没有明显的连接”似乎是我的代码中最常见的bug来源之一。

EN

回答 4

Stack Overflow用户

发布于 2011-04-02 04:06:04

我认为第一个绝对是更可取的。我使用第二种方法的唯一一次是将代码放在外部,而不是内部的if/else中。

当我看到else if时,我立即查找if。所以我会说这显然是有联系的。

票数 3
EN

Stack Overflow用户

发布于 2011-07-12 12:55:50

我想这是代码的味道。你在这里做什么,或者你为什么要这么做,并不是很明显。事实是,您认为它们之间没有明显的联系,并且它们是bug的常见来源,这告诉您不要这样做。

重写这段代码,以便您在这些条件上进行分支的原因变得清晰。理想情况下,你应该能够阅读代码并让它表达你的意图和/或你的规范。

代码语言:javascript
复制
taller_than_wide = a > b;
more_expensive_than_normal = c > d;

if (taller_than_wide) {
      foo();
}
elseif (more_expensive_than_normal) {
      bar();
}
else {
      baz();
}
票数 1
EN

Stack Overflow用户

发布于 2011-04-02 04:16:14

我避免使用第二种方法,因为它会导致大型条件句的大量缩进。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5518256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档