gpt4 book ai didi

php - 独立的 getter/setter 方法,还是组合?

转载 作者:IT王子 更新时间:2023-10-29 00:08:17 27 4
gpt4 key购买 nike

在处理项目时,我一直在进行一些更改并浏览现有框架 API 文档以获取见解。

在仔细阅读 Kohana 文档时,我注意到任何给定类的 getter/setter 通常是组合在一起的:

public function someProperty($value = null){
if(is_null($value){
return $this->_someProperty;
}
$this->_someProperty = $value;
return $this;
}

而不是:

public function setSomeProperty($value){
$this->_someProperty = $value;
return $this;
}

public function getSomeProperty(){
return $this->_someProperty;
}

除了减少给定类的方法数量之外,这样做(前者)还有什么值(value)吗?我一直认为方法(一般的功能)应该更能描述一个 Action 。其他有经验的开发人员看到这一点时是否会畏缩,哪怕是一点点?

我很惊讶地看到一个流行的框架使用这样的约定(我当然没有使用过 Kohana)

最佳答案

我认为这是一种不好的做法,因为它违反了 CommandQuerySeparation .设置一个值就是改变状态(命令)。获取值是要求状态(查询)。一个方法不应该两者兼得,而应该只做一件事。

此外,当一个方法只被称为用户名时,它的作用并不是很明显,例如没有动词,例如 get 或 set。这在您的示例中变得更糟,因为返回值要么是对象本身,要么是属性值,所以它不一致。

此外,getters (and setters) should be used sparingly因为它们会很快使您的 API 复杂化。您拥有的 getter 和 setter 越多,该对象的合作者需要的关于该对象的知识就越多。如果您发现您的对象向其他对象询问其内部结构,那么您很可能放错了职责。

关于php - 独立的 getter/setter 方法,还是组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6674784/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com