嵌套的“if”或多个“return”语句?[关闭]

nested "if"s or more "return" statements? [closed]

提问人:Bitx 提问时间:11/21/2013 更新时间:11/21/2013 访问量:166

问:


想改进这个问题吗?更新问题,以便可以通过编辑这篇文章用事实和引文来回答。

10年前关闭。

我想知道哪个在函数中更好(在我的情况下是 java 方法,但我认为它适用于更多语言):包括具有很少 return 语句的嵌套 if,或者没有具有许多 return 语句的嵌套 if?

为了简洁起见,我将使用一个简单的例子;但是,我问的是这两种选择的一般和更长的案例。

if(condition1) {
      if(condition2) {
         return condition3;
      }
}
return false;

或者这个:

if(!condition1) 
  return false;
if(!condition2)
   return false;
return condition3;
与语言无关的 编码样式 约定

评论

2赞 Nikolai Ruhe 11/21/2013
或者只有一行:return condition1 && condition2 && condition3;
0赞 mguijarr 11/21/2013
我更喜欢 return 语句。但我认为这真的是一个品味问题。
0赞 Jon Purdy 11/21/2013
早期回报与嵌套正 IF 语句的可能重复
0赞 MattDiamant 11/22/2013
“一次回报”的概念从何而来?

答:

0赞 Josh 11/21/2013 #1

当您开始使用更高阶的开关时,第一种方法通常更好。

想象一下,您的 CPU 运行了一个简单的 if 检查 n-1 条件与失败条件 k (1

如果你正在解析一个数据库的 1000 个条件,但在条件 15 上失败了,那么你就会进行很多“无用”的计算,只是为了通过一个例子来实现我的表示法。

评论

0赞 Nikolai Ruhe 11/21/2013
建议的解决方案之间没有语义上的区别。它们仅在语法上有所不同。
2赞 Claudiu 11/21/2013 #2

我更喜欢“经常返回”方法,特别是对于复杂的条件检查功能。对我来说,这看起来更清楚:

if (foob || bar) {
    return "morgan";
}
if (!glorb) {
    return "noglorb";
}
if (argutan) {
    return "gahx!";
}
return "nurb";

甚至:

if (foob || bar) {
    res = "morgan"
}
else {
    if (!glorb) {
        res = "noglorb";
    }
    else {
        if (argutan) {
            res = "gahx!";
        }
        res = "nurb";
    }
}
return res;

此外,如果我发现类似后者的东西开始在较长的函数中形成,那么我会将该代码放入一个新函数中,以便我可以使用“经常返回”样式。