【问题标题】:nested "if"s or more "return" statements? [closed]嵌套“if”或更多“return”语句? [关闭]
【发布时间】:2013-11-20 20:36:50
【问题描述】:

我想知道在函数中哪个更好(在我的例子中是 java 方法,但我认为它适用于更多语言):包括带有少量 return 语句的嵌套 ifs,还是没有带有许多 return 语句的嵌套 ifs?

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

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

或者这个:

if(!condition1) 
  return false;
if(!condition2)
   return false;
return condition3;

【问题讨论】:

标签: language-agnostic coding-style conventions


【解决方案1】:

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

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;

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

【讨论】:

    【解决方案2】:

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

    想象一下你的 CPU 通过一个简单的 if 检查 n-1 条件与失败条件 k (1

    如果您要为 1000 个条件解析数据库并在条件 15 上失败,那么您将进行大量“无用”计算,只是为了通过示例来实现我的符号。

    【讨论】:

    • 建议的解决方案之间没有语义差异。它们只是语法不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    相关资源
    最近更新 更多