Hai*_*ood 5 php optimization return
我经常被告知我不应该使用多个返回点,而应该只使用一个:
以此为例;
function data($item){
switch($item){
case 'one':
return 1;
case 'two':
return 2;
case 'three':
return 3;
case 'different_type':
return 'Something Different';
default:
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
显然,更好的写作方式是:
function data($item){
$value = false;
switch($item){
case 'one':
$value = 1;
break;
case 'two':
$value = 2;
break;
case 'three':
$value = 3;
break;
case 'different_type':
$value = 'Something Different';
break;
default:
$value = false;
}
return $value;
}
Run Code Online (Sandbox Code Playgroud)
是否有任何理由不是一个优先于另一个?
我想第二个给出一些IDE更好的机会来暗示返回值?但这里也存在性能问题吗?
是否有任何理由不是一个优先于另一个?
有时但这取决于具体的代码.
我想第二个给出一些IDE更好的机会来暗示返回值?
不,通常情况并非如此.
但这里也存在性能问题吗?
早期返回可以在代码中缩短较长的路径,因此可以带来好处.
一个好的编码指南现在通常不会严格控制这种情况,在早期,语言不灵活,保持严格的方法可能是有意义的(函数的最后一行必须是单个返回命令).
现在众所周知,降低环状复杂性更为重要,这通常是早期返回的情况.但是,如果你早点回来,那就不是这样了,这种情况自然会发生.
当你在谈论代码时,第一个例子应该出现在我的眼中:
function data($item) {
static $map = [
'one' => 1,
'two' => 2,
'three' => 3,
'different_type'
=> 'Something Different',
];
# return @$map[$item] ?: false;
return isset($map[$item])
? $map[$item]
: false
;
}
Run Code Online (Sandbox Code Playgroud)
但这也会违背你的榜样.