【发布时间】:2012-09-27 22:00:43
【问题描述】:
经常有人告诉我,我不应该使用多个返回点,而应该只使用一个:
以这个函数为例;
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;
}
}
显然这是一种更好的写法;
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;
}
有什么理由不是偏向于一个的问题吗?
我想第二个让一些 IDE 有更好的机会来提示返回值?但是这里也存在性能问题吗?
【问题讨论】:
-
这个问题以前曾被问过(不幸的是,在另一个 StackExchange 站点上)。您可以在此处阅读回复:programmers.stackexchange.com/questions/118703/…
-
好问题,但不具建设性,因为意见会有所不同。
-
好的 IDE 可以毫无问题地键入多个返回语句。在性能方面,所谓的“提前返回”或“提前返回”可能会带来好处。
-
从理论上讲,多返回解决方案的低级指令较少(例如,没有额外的变量和赋值)。
-
您会经常听到,当我们谈论优化时,您首先要问的问题不是“是否更快”,而是“是否需要优化”。更好的解决方案通常不是更快。我知道 php 编译器/vm 不好,但这不是质疑声明新变量或具有多个返回的性能问题的理由。如果有区别,我不会打赌第二种解决方案会更快,这可能只是纳秒的问题。您不想针对这么小的性能提升进行优化。
标签: php optimization return