我正在使用 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 应用于此,甚至可能? - 我想可能有一些方法可以写一次。
此致
答案 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');
}
}