Эти два метода класса PHP нарушает Принцип единой ответственности (SRP) в соответствии с правило phpmd booleanargumentflag.
Как они должны быть написаны, чтобы избежать этого?
Если решение состоит в том, чтобы удалить значение по умолчанию «= true», то как это улучшает код?
/**
* Set verbose mode.
*
* @param boolean $mode true or false to enable and disable verbose mode,
* default is true.
*
* @return $this
*/
public function setVerbose($mode = true)
{
$this->verbose = $mode;
return $this;
}
/**
* Use cache or not.
*
* @param string $use true or false to use cache.
*
* @return $this
*/
public function useCache($use = true)
{
$this->useCache = $use;
return $this;
}
Цель этой подсказки — уменьшить ответственность метода.
В этом конкретном случае, если функция метода состоит в том, чтобы установить какое-то поведение, у него не должно быть никакого значения по умолчанию. Значения по умолчанию принадлежат определению класса или его конструктору.
Вы можете просто удалить значения параметров по умолчанию и установить их при определении свойств класса. т.е .:
public $useCache = true;
В вашем примере есть два метода, каждый с двумя обязанностями: включить и выключить. Лучше разделить каждый метод, чтобы дать каждому только ответственность. Пример:
public function setVerbose($flag);
становится
public function setVerboseOn();
public function setVerboseOff();