面向对象的设计:返回值还是设置属性?

Wil*_*ill 3 php oop

在这种情况下,什么被认为是"最佳实践".我有一个正在收集远程资源的类,看起来有点像这样:

class Gather {
    public function getAll($locations) {
        $results = array('All','My','Results');
        return $results;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,返回结果或将其作为财产分配是否被视为最佳做法?即.

// This
$results = $gatherer->getAll();
// vs This
$gatherer->getAll(); // now $gatherer->results can be used
Run Code Online (Sandbox Code Playgroud)

我很可能只是过度思考这个,但我没有接受过正式的训练,我想知道是否有更"正确"的做法.

Ada*_*upp 6

毫无疑问,第一个($ results = $ gatherer-> getAll())是首选.原因是价值与其来源之间的关系是明确的.在第二种情况下,读者不清楚$ gatherer-> results是通过调用getAll()来填充的.也许它来自其他一些电话,或者它总是在那里,或由外部来电者设定.

这也使读者更容易追踪以理解呼叫.当getResults()返回值时,很明显他们的读者应该阅读getResults()的实现来查看它的来源.