在这种情况下,什么被视为“最佳做法”。我有一个收集远程资源的课程,看起来有点像这样:
class Gather {
public function getAll($locations) {
$results = array('All','My','Results');
return $results;
}
}
我的问题是,返回结果或将其作为财产分配是否被视为最佳做法?即
// This
$results = $gatherer->getAll();
// vs This
$gatherer->getAll(); // now $gatherer->results can be used
我很可能只是在思考这个问题,但我没有接受过正式的培训,我想知道是否有更“正确”的做法。
答案 0 :(得分:6)
毫无疑问,第一个($ results = $ gatherer-> getAll())是首选。原因是价值与其来源之间的关系是明确的。在第二种情况下,读者不清楚$ gatherer->结果是否通过调用getAll()来填充。也许它来自其他一些电话,或者它总是在那里,或由外部来电者设定。
这也使读者更容易追踪以理解呼叫。当getResults()返回值时,很明显他们的读者应该阅读getResults()的实现来查看它的来源。
答案 1 :(得分:1)
我最近一直在努力解决这个问题。在第二个版本
$gatherer->getAll(); // now $gatherer->results can be used
我会将您的命名约定更改为
$gatherer->initResults();
然后很明显,结果是$ gatherer的属性。您甚至可以像这样定义$ gatherer-> initResults():
public function initResults() {
$this->results = $this->getAll();
}
public function getAll() {
// do whatever to get results
}
那么,您可以使用任何一种形式。
很抱歉,我知道这更像是一个评论,然后是一个答案,但它的代码很重,几乎不可读作为评论。