在PHP函数/方法中返回的最佳实践

Joh*_*ops 7 php methods return function code-standards

我正在重构一个广泛的代码库加班.从长远来看,我们将在课堂上开发整个系统,但与此同时,我正在利用这个机会来优化我的PHP技能并改进我们在数百个网站中使用的一些遗留代码.

我一直在阅读有关如何最好地从自定义函数返回数据的相互矛盾的文章,通常争论分为两类,即关注最佳技术实践的那些以及关注易于阅读和呈现的那些.

我对从自定义PHP函数返回时您认为最佳实践的观点(详细说明)感兴趣.

作为一个更好的标准,我还没有决定以下哪一个使用这个基本的理论功能;

接近a.

填充返回变量并在函数末尾返回它:

<?php
function theoreticalFunction( $var )
{
    $return = '';
    if( $something > $somethingelse ){
       $return = true;
    }else{
       $return = false;
    }
    return $return;
}
?>
Run Code Online (Sandbox Code Playgroud)

方法b.

返回每个端点:

<?php
function theoreticalFunction( $var )
{
    if( $something > $somethingelse ){
       return true;
    }else{
       return false;
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

可能的重复可能是使用返回true或false的函数的PHP最佳实践什么?然而,尽管我上面的基本例子,这并不仅仅是真或假.

我已经查看了PSR指南,但没有看到任何内容(但我可能已经错过了所以请随时指向PSR参考:)).

扩展原始问题:

根据预期/期望的输出类型,用于返回的方法是否不同?

此方法是否根据过程或面向对象编程方法的使用而改变?正如这个问题所示,面向对象带来了自己的怪癖,以进一步扩展可能的格式/表示选项PHP中返回方法的最佳实践

请尽量清楚你的解释,我感兴趣的是你为什么选择你喜欢的方法,以及如果有的话,你选择了另一种方法.

Ali*_*man 5

我倾向于提前退货 - 一旦你知道发生了什么就离开这个功能.这种用法的一种称为' Guard Clause '

我经常会做的其他事情包括删除else默认值的final :

if ($something > $somethingelse) {
   return true;
}
return false;
Run Code Online (Sandbox Code Playgroud)

事实上,形式的条件if (boolean) return true; else return false可以进一步缩短(如果你更清楚的话)return ($something > $somethingelse);.从这样的代码中提取复杂的if子句到一个有用的命名函数可以帮助清除代码的含义.


dec*_*eze 4

有人主张函数中只有一个退出点return(最后只有一个),而另一些人则主张尽早失败/返回。这只是具体情况的意见和可读性/可理解性问题。几乎没有任何客观的技术答案。

现实情况是,这根本不是可以教条规定的事情。有些算法用 A 表示更好,而另一些算法用 B 表示效果更好。

在您的具体情况下,两者都不是“最好的”;你的代码应该写成:

return $something > $somethingelse;
Run Code Online (Sandbox Code Playgroud)

这有望成为一个例子,表明根本不存在普遍适用的规则。

  • 确实是的。我对你提出的一个措辞巧妙的问题表示赞赏,我自己也很高兴今天这个问题得到了普遍的好评。 (2认同)
  • 公平地说,我从一开始就知道这将是更多的意见,并且忽略了SO通常对基于意见的问题不满意,尽管有时产生一些辩论会很好。我想我应该寻找一个论坛来解决这个问题:)虽然这个演示可以很好地接触经验丰富的开发人员,但我真的很珍惜有机会听到您对我的问题的诚实和友好的意见,它为我和毫无疑问的其他人提供了价值,很遗憾它不是 stackoverflow 上可接受的格式:) (2认同)