【问题标题】:What is better.. to have separate functions or combined functions in php? [closed]什么更好.. 在 php 中有单独的函数或组合函数? [关闭]
【发布时间】:2014-06-26 18:50:16
【问题描述】:

我的问题基本上是..在 PHP 中制作函数的好习惯是什么?
例如 - 如果我有两个选项赞成和反对。
因此,一种选择是为 upvote 和 downvote 制作 2 个单独的函数,例如 -

function upvote($id,$user){
    //The upvote code goes here..
}
function downvote($id,$user){
    //The downvote code goes here..
}

另一种选择是结合这两个函数并使用 if-else 使它们成为一个
例如:

function vote($id,$user,$vote){
    if( $vote == 'upvote' ){
        //The upvote code goes here..
    }
    else {
       // the downvote code goes here..
    }
}

所以我想知道这两种方法中哪一种是好的做法,哪一种可以更快(性能方面)。
PS - 我将我的函数文件包含在每个页面的顶部。

【问题讨论】:

  • 你为什么不简单地测试一下,看看哪一个会为你增加一两毫秒? :)
  • 第一个需要2个函数定义,但在调用任何函数时都不需要条件分支操作。第二个只需要 1 个函数定义,但在调用时确实需要条件分支操作。与性能相关的问题在这里完全无关紧要。
  • 如果您希望功能简洁,则可以使用单个功能。如果您在每个条件中有许多操作,那么出于可读性和稳定性的目的,最好将它们分开。严格来说,从人类的角度来看。

标签: php performance function


【解决方案1】:

我认为首选可以很好:

function upvote($id,$user){
  //The upvote code goes here..
}
function downvote($id,$user){
  //The downvote code goes here..
}

因为这在将来编辑代码和速度方面可以很灵活。我认为两者不会有太大差异:)

【讨论】:

    【解决方案2】:

    通常最好将它们分开。一个好的目标是让每个函数只执行一个动作。它使将来的调试变得更加容易,并且使代码更具可读性。该原则在这里得到了更好的解释:

    http://en.wikipedia.org/wiki/Separation_of_concerns

    【讨论】:

    • 你是对的,但同样,虽然 upvotingdownvoting 都可以被视为一个动作,但 也可以投票,对吧?
    • 是的,这两个动作可能不够明显,需要两种不同的方法,但我认为最好在合理范围内尽可能细化。
    【解决方案3】:

    将代码拆分为单独的函数会减少其toxicity,因此建议使用。

    或者换句话说:函数越大越复杂,它就越难以阅读,也增加了潜在的错误。

    如果一段代码可以分成逻辑部分,你也应该这样做。

    【讨论】:

      【解决方案4】:

      创建一个函数而不是两个函数没有任何好处。这取决于是什么 函数内部:db调用,webservices调用ecct。

      如果两个函数内部的功能相同并且 唯一改变的是 $vote 参数和你 不想重复自己,复制/粘贴不同功能的代码。

      我总是尝试使用单一职责模式,以便一个功能只做 那个功能。

      【讨论】:

        【解决方案5】:

        从人类的角度来看,您可能认为投票是一个单一的动作——只是投票;因为一般来说你不会说 - 我要对某人投赞成票或反对票;)。但是在这种情况下,如果你认为是面向对象的,那么你有一个帖子女巫可以被否决或被投赞成票。像这样的

        class post {
        
            var $votes = 0;
        
            // other staff
        
            function up-vote () {
               $this->votes = $this->votes++;
            }
        
            function down-vote () {
               $this->votes = $this->votes--;
            }
        }
        

        如您所见,post 类具有 two separate methods。在性能方面,差异很小。

        【讨论】:

          猜你喜欢
          • 2012-08-27
          • 1970-01-01
          • 1970-01-01
          • 2011-03-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多