使用else {}或使用return的最佳做法?

时间:2012-11-25 12:42:07

标签: php methods return

嘿,我已经编程了几年了,就在最近,我想知道在一个总能回归的方法中最好做什么:

if($age < 18) {
    return 'Under 18';
}
else {
    return 'Adult';
}

或者使用它是否更好:

if($age < 18) {
    return 'Under 18';
}
return 'Adult';

在后者如果他们未满18岁的情况下,该程序将返回“未满18岁”并终止该功能的其余部分,那么在第一个例子中是否需要其他{}?感谢。

5 个答案:

答案 0 :(得分:0)

我不认为这两个例子都有正确或错误的方法。两种工作 - 个人编码风格是真正的主要因素。我自己会使用后一种风格,因为即使if语句被borked(在更复杂的情况下),函数/方法总是会返回一些东西。

答案 1 :(得分:0)

有人说这是个人品味的问题,但我认为在方法/功能中最好有一个入口点和一个出口点,因为这通常有助于调试和控制功能流程(所以你不会被代码中间的突然return“惊讶”。所以代码宁可是:

$result = 'Adult';
if($age < 18) {
    $result = 'Under 18';
}

return $result;

除了示例代码不是真的很幸运,因为它应该写得很好:

return ($age < 18) ? 'Under 18' : 'Adult';

答案 2 :(得分:0)

至于我 - 第一个更具可读性。但没有太大区别。

答案 3 :(得分:0)

两者在编程上都是相同的(第二个可能是更多的操作,但在计算方面,完全相同)。因此,唯一的变化就是审美。如果您的代码不会改变,我会建议第二个选项。但是,如果它会增长,你可能会对第一个选项感兴趣。

如果代码不会增长,我个人会这样设置:

return ($age < 18) ? 'Under 18' : 'Adult';

或者,根据您的要求,即使这样也很有趣:

return ($age >= 18);

它需要不必要的代码,使其在保持功能和可读性的同时减少膨胀。如果你能保持简单和完全可以理解,不要让自己复杂化。我觉得这里引用爱因斯坦的诱惑(;

答案 4 :(得分:0)

最好早点回来。嵌套,如果elses使条件更差!

简化(无其他)示例

//nested (without return)
if ($a == 1) {
    if ($a == 2) {
        if ($a > 2) {

        }
    }
}

//return early
if ($a == 1) {
    return 1;
}

if ($a == 2) {
    return 2;
}

if ($a > 3) {
    return $a;
}

<强>解释

期望早期返回的原因是因为(在我看来)大脑如何处理嵌套的ifs。在阅读嵌套if结构时,您会注意到自己似乎总是跟踪前面的if条件。如果你像我一样把它弄平,你的大脑就会更容易处理(考虑到它做同样的事情,很奇怪)。

一般来说,早期返回更好,因为在返回语句之前不必读取所有代码 - 执行速度也快,但速度更快取决于代码本身。

进一步阅读

https://softwareengineering.stackexchange.com/questions/118703/where-did-the-notion-of-one-return-only-come-from