什么更好.在php中使用单独的函数或组合函数


What is better.. to have separate functions or combined functions in php?

我的问题基本上是…在PHP中创建函数的最佳实践是什么?
Eg -如果我有两个选项,赞成和反对。
因此,一个选择是为upvote和downvote创建两个独立的函数,如-

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 -我包括我的函数文件在每个页面的顶部。

我认为第一选择可以很好:

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

因为这在将来编辑代码方面是灵活的,就速度而言…我认为两者不会有太大的差异。

通常将它们分开比较好。一个好的目标是让每个函数只执行一个操作。它使将来的调试变得容易得多,并使代码更具可读性。在这里可以更好地解释这个原则:

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

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

或者换句话说:一个函数越大、越复杂,它就越难读,也就越有可能出现bug。

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

用一个函数代替两个函数没有任何好处。这取决于是什么在函数:db调用中,webservices调用ecect。

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

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

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

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

可以看到,类posttwo separate methods。在性能方面,差异很小。