使用方法 return 值作为参数与在一个方法中设置 class 变量并将其用作另一个方法的参数
Using method return value as argument vs setting class variable in one method and using it as an argument of another
我想知道这两种编程风格的优缺点是什么,这只是一种品味问题还是一种理想的方式?
使用一个方法return值作为另一个方法的参数:
public function add($data)
{
$this->uploadFilesToPreflight(
$this->addOrderFilesToDB(
$data['shop'],
$data['filesData']
)
);
}
VS 在方法 1 中设置受保护的 class 变量并将其用作方法 2 的参数:
public function add($data)
{
//does some stuff and sets $orderFilesArray
$this->addOrderFilesToDB($data['shop'], $data['filesData']);
$this->uploadFilesToPreflight($this->orderFilesArray);
}
问题是,class 应该是什么? class 有状态吗?
如果 class 应该是一个服务,其中 add($data)
可以被多次调用并且行为不应该改变第一个选项会更好。
如果 class 有一个状态,并且它的行为应该通过调用 add($data)
来改变,那么第二个选项是好的,但你必须意识到这可能会导致副作用,如果class 有其他依赖于 $this->orderFilesArray
的方法。
要更好地回答最佳选项,您必须 post 更广泛的 class 上下文。
我想知道这两种编程风格的优缺点是什么,这只是一种品味问题还是一种理想的方式?
使用一个方法return值作为另一个方法的参数:
public function add($data)
{
$this->uploadFilesToPreflight(
$this->addOrderFilesToDB(
$data['shop'],
$data['filesData']
)
);
}
VS 在方法 1 中设置受保护的 class 变量并将其用作方法 2 的参数:
public function add($data)
{
//does some stuff and sets $orderFilesArray
$this->addOrderFilesToDB($data['shop'], $data['filesData']);
$this->uploadFilesToPreflight($this->orderFilesArray);
}
问题是,class 应该是什么? class 有状态吗?
如果 class 应该是一个服务,其中 add($data)
可以被多次调用并且行为不应该改变第一个选项会更好。
如果 class 有一个状态,并且它的行为应该通过调用 add($data)
来改变,那么第二个选项是好的,但你必须意识到这可能会导致副作用,如果class 有其他依赖于 $this->orderFilesArray
的方法。
要更好地回答最佳选项,您必须 post 更广泛的 class 上下文。