Повторение блоков кода, используемых в нескольких функциях в классе — как применять 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 функций начинаются с пустой локальной $ т массив и заканчивается $ т быть сведенным и переданным другой функции, наконец $ this- возвращается

Как мы можем подать заявку DRY к этому, это даже возможно? — Я думаю, может быть, есть какой-то способ написать это однажды.

С уважением

2

Решение

Хорошо, чтобы применить СУХОЙ, вы должны ответить на этот вопрос: Что отличается все время и что остается неизменным? Видя в вашем коде, кажется очевидным, что только 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');
}
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector