在这种情况下,什么被认为是“最佳实践”。我有一个收集远程资源的类,它看起来有点像这样:
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这很可能是我想得太多了,但我没有接受过正式的培训,我想知道是否有“更正确”的方法来做这样的事情。
发布于 2011-02-04 00:18:33
毫无疑问,第一个($results = $gatherer->getAll())是首选的。原因是值和它的来源之间的关系是明确的。在第二种情况下,读者不清楚$gatherer->结果是通过调用getAll()来填充的。也许它来自其他呼叫,或者它总是在那里,或者由外部呼叫者设置。
这也使读者更容易通过跟踪来理解调用。当getResults()返回值时,很明显读者应该阅读getResults()的实现,看看它来自哪里。
发布于 2013-01-10 04:02:42
我最近一直在努力解决同样的问题。在第二版中
$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
}因此,您可以使用这两种形式中的任何一种。
对不起,我知道这更多的是一个评论而不是一个答案,但它的代码太多了,以至于作为一个评论实际上是无法阅读的。
https://stackoverflow.com/questions/4888602
复制相似问题