根据phpmd规则booleanargumentflag,这两个PHP类方法违反了单一职责原则(SRP)。
应该如何编写以避免这种情况?
如果解决方案是删除默认值"= 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();