重复在课堂上多个函数中使用的代码块 - 如何应用DRY

时间:2014-12-07 03:14:47

标签: php oop dry

我正在使用 php ,我有一个包含10个函数的类,它们共享一些重复代码,如下所示

class A
{

    function car()
    {
        $t = [];
        ...

        ...
        $t .= 'CAR ' . implode(', ', $t);
        $this->someFunc($t);

        return $this;
     }


     function bike()
     {
        $t = [];
        ...

        ...
        $t .= 'BIKE ' . implode(', ', $t);
        $this->someFunc($t);

        return $this;
     }

     ...

}

在我放置“ ... ”的函数中,它代表了每个函数不同的代码,但是所有10个函数都以空的本地 $ t 数组开头,并且结束 $ t 被夷为平地并传递给另一个函数,最后返回 $ this

我们如何将 DRY 应用于此,甚至可能? - 我想可能有一些方法可以写一次。

此致

1 个答案:

答案 0 :(得分:2)

好的,要应用DRY,您必须回答这个问题:总是有什么不同,有什么不一样?看到您的代码,看起来很明显只有CAR | BIKE有所不同。所以根据这个,你可以抽象你的电话,如下:

class A
{
     protected function prepare($t, $type)
     {
        $t .= $type . implode(', ', $t);
        $this->addToString($t);

        return $this;
     }


     public function car()
     {
         $t = [];
         ....

         return $this->prepare($t, 'CAR');
     }

     public function bike()
     {
        $t = [];
        ...

        return $this->prepare($t, 'BIKE');
     }
}