я использую 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 функций начинаются с пустой локальной $ т массив и заканчивается $ т быть сведенным и переданным другой функции, наконец $ this- возвращается
Как мы можем подать заявку 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');
}
}
Других решений пока нет …