Language agnostic 嵌套的;如果;s或更多“;return";声明?

Language agnostic 嵌套的;如果;s或更多“;return";声明?,language-agnostic,coding-style,conventions,Language Agnostic,Coding Style,Conventions,我想知道函数中哪一个更好(在我的例子中是java方法,但我假设它适用于更多语言):包括带有少量返回语句的嵌套ifs,还是没有带有许多返回语句的嵌套ifs 为了简洁起见,我将使用一个简单的示例;然而,我想问的是关于这两种选择的一般和长期案例 if(condition1) { if(condition2) { return condition3; } } return false; 或者这个: if(!condition1) return false

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

为了简洁起见,我将使用一个简单的示例;然而,我想问的是关于这两种选择的一般和长期案例

if(condition1) {
      if(condition2) {
         return condition3;
      }
}
return false;
或者这个:

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

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

想象一下,您的CPU正在运行一个简单的if检查,检查n-1条件与失败条件k(1 如果你正在解析一个数据库中的1000个条件,但在条件15中失败,那么你将面临大量“无用”计算,只是为了用一个例子来实现我的表示法。

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

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;

此外,如果我在一个较长的函数中发现后一种情况,那么我会将该代码放入一个新函数中,这样我就可以经常使用“return”风格。

或者只有一行:
返回条件1&&condition2&&condition3;
我更喜欢返回语句。但我认为这确实是一个品味问题。可能的重复建议的解决方案之间没有语义上的差异。它们只在语法上不同。