嘿,我已经编程了几年了,就在最近,我想知道在一个总能回归的方法中最好做什么:
if($age < 18) {
return 'Under 18';
}
else {
return 'Adult';
}
或者使用它是否更好:
if($age < 18) {
return 'Under 18';
}
return 'Adult';
在后者如果他们未满18岁的情况下,该程序将返回“未满18岁”并终止该功能的其余部分,那么在第一个例子中是否需要其他{}?感谢。
答案 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条件。如果你像我一样把它弄平,你的大脑就会更容易处理(考虑到它做同样的事情,很奇怪)。
一般来说,早期返回更好,因为在返回语句之前不必读取所有代码 - 执行速度也快,但速度更快取决于代码本身。
进一步阅读