-5

嘿,我已经编程了几年了,就在最近,我想知道在一个总是会返回一些东西的方法中最好做什么:

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

还是更好地使用:

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

在后者中,如果他们未满 18 岁,程序将返回“未满 18 岁”并终止函数的其余部分,那么在第一个示例中是否需要 else{}?谢谢。

4

5 回答 5

0

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

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

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

或者,根据您的要求,甚至这也可能很有趣:

return ($age >= 18);

它消除了不必要的代码,使其不那么臃肿,同时保持功能性和可读性。如果您可以保持简单且完全可以理解,请不要使自己复杂化。我很想在这里引用爱因斯坦的话 (;

于 2012-11-25T12:58:40.837 回答
0

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

于 2012-11-25T12:46:13.563 回答
0

有人说这是个人品味的问题,但我认为最好在方法/函数中设置一个入口点和一个出口点return,因为这通常有助于调试和控制函数流(所以你不会在中间突然“感到惊讶”代码 所以任何代码宁愿是:

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

return $result;

除了示例代码不是很幸运,因为它应该写成:

return ($age < 18) ? 'Under 18' : 'Adult';
于 2012-11-25T12:48:15.973 回答
0

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

于 2012-11-25T12:48:46.693 回答
0

最好早点回来。嵌套 if else 使条件更糟!

简化(无其他)示例

//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

于 2012-11-25T13:02:17.747 回答