嵌套“if”或更多“return”语句?

时间:2013-11-20 20:36:50

标签: language-agnostic coding-style conventions

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

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

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

或者这个:

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

2 个答案:

答案 0 :(得分: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;

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

答案 1 :(得分:0)

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

想象一下,如果检查n-1条件与失败条件k(1

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