什么是更好的..在PHP中有单独的功能或组合功能?

时间:2014-06-26 18:50:17

标签: php performance function

我的问题基本上是..在PHP中创建函数的好习惯是什么? 例如 - 如果我有两个选项upvote和downvote。
因此,一个选择是为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 - 我将我的函数文件包含在每页的顶部。

5 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

我认为第一选择可能是好的:

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

因为在将来编辑代码方面可以灵活处理并且就速度而言......我不认为两者都会有很大差异:)

答案 2 :(得分:1)

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

或者换句话说:功能越大越复杂,越难以阅读,也会增加漏洞的可能性。

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

答案 3 :(得分:1)

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

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

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

答案 4 :(得分:0)

从人类的角度来看,你可能认为投票是一个单一的行动 - 只是投票;因为一般情况下你不会说 - 我要投票或者投票给某人;)。但在这种情况下,如果你认为面向对象,你有一个女巫可以投票或投票。像这样的东西

class post {

    var $votes = 0;

    // other staff

    function up-vote () {
       $this->votes = $this->votes++;
    }

    function down-vote () {
       $this->votes = $this->votes--;
    }
}

如您所见,课程posttwo separate methods。在性能方面,差异很小。