影响属性与返回值的方法

时间:2017-12-29 11:45:39

标签: php

社区的新手,想知道是否有关于OOP方法的最佳实践指导?

假设代码重用不是必需的(实例化/一次性例程等),私有方法本身应该分配属性值,还是返回一个由调用方法赋值的值?

考虑以下PHP示例:

<?php

class MyClass1
{

    private $foo;

    public function __construct()
    {
        $this->setFoo();
    }

    private function setFoo()
    {

        // no params
        // returns void

        $this->foo = 6;

    }

}


class MyClass2
{

    private $foo;

    public function __construct()
    {
        $this->foo = $this->setFoo();
    }

    private function setFoo()
    {

        // no params
        // returns value

        return 6;

    }

}


class MyClass3
{

    private $foo;

    public function __construct()
    {
        $this->foo = $this->setFoo(3);
    }

    private function setFoo( $val )
    {

        // accepts param
        // returns value

        return $val;

    }

}

?>

MyClass1 方法是否有任何重大原因?

即。使用程序和直接访问/分配属性的方法构建,而不是接受参数并返回值(所以基本上所有DocBlock都包含 @return void

希望这有意义 - 主要是好奇:)

非常感谢,

1 个答案:

答案 0 :(得分:0)

这里有一个更有说服力的(尽管是面向Java的)thread,其术语比我管理的更清晰!

<强> TL; DR

私有方法为过程(对象状态更改,无返回值)

  • 优点:发挥OOP优势(私有方法之间的封装/沟通)
  • 缺点:难以扩展(通过多种方法突变同一实例变量意味着流量控制)

私有方法为函数(对象状态不会更改,返回值)

  • 优点:更清晰地了解程序流程
  • 缺点:无意识隐藏副作用的可能性(OOP的性质无法保证完全避免突变 - 依赖假设/条件进行全面记录)