在对象自己的 class 中使用 属性 与 getter/setter

Using property vs getter/setter in object's own class

假设我有一个 class A,它有另一个 class B 作为它的 属性。

当classA需要对classB做修改时,用getter方法修改还是直接访问属性访问比较好?

举个例子。

public class Car() {
    private $engine;

    public function __constructor() {
        $this->$engine = new Engine();
    }

    public function getEngine() {
        return $this->engine;
    }

    public function replaceEngine() {
        // Should I use
        $this->engine->change();

        // Or should I use
        $this->getEngine()->change();
    }
}

我正在考虑使用 getter 方法,这样如果我必须存根 Class 引擎方法,我可以模拟 getEngine() returns 并删除依赖项。

但我希望看到更多对此的意见。

谢谢!

基于意见的问题在堆栈溢出方面表现不佳,但您确实应该使用 getter 和 setter。

由于多种原因,此方法是更好的编程实践。

-您可以轻松使用 mock classes

-如果您需要 class 更新以响应属性更改(或将来可能)。例如:setSpouse 函数可以同时更新 'spouse' 和 'relationshipStatus' 属性

-如果您想进行重构