不使用二传手和获取器真的那么错误吗?
我是PHP的新手。出于某种原因,在其他类型的编程语言(如JAVA)中,我对每个变量使用setters和getters没有问题,但是当我用PHP编程时,可能是因为它非常灵活,感觉就像浪费时间一样。大多数时候将类属性设置为公共属性并像这样操作它们感觉更简单。问题是,当我这样做时,我觉得我做错了什么,违背了OO原则。
不使用二传手和获取器真的那么错误吗?为什么或为什么不呢?你们大多数时候是怎么做到的?
我是PHP的新手。出于某种原因,在其他类型的编程语言(如JAVA)中,我对每个变量使用setters和getters没有问题,但是当我用PHP编程时,可能是因为它非常灵活,感觉就像浪费时间一样。大多数时候将类属性设置为公共属性并像这样操作它们感觉更简单。问题是,当我这样做时,我觉得我做错了什么,违背了OO原则。
不使用二传手和获取器真的那么错误吗?为什么或为什么不呢?你们大多数时候是怎么做到的?
不使用属性访问器的主要问题是,如果您发现以后需要将字段更改为属性 - 例如,使其成为子类中的计算属性 - 您将破坏API的客户端。对于已出版的图书馆来说,这是不可接受的。对于内部的,只是相当多的工作来修复事情。
对于私人代码或小型应用程序,只需将其翅膀即可。IDE(或文本编辑器)将允许您生成访问器样板并使用代码折叠将其隐藏。这可以说使得机械上使用getter和setter相当容易。
请注意,一些编程语言具有综合默认字段+getter+setter的功能 - Ruby通过元编程做到这一点,C#具有自动实现的属性。Python通过让你覆盖属性访问来完全回避这个问题,让你把属性封装在需要它的子类中,而不必事先打扰它。(这是我最喜欢的方法。
getters 或 setters 的要点是,您仍然可以在一个位置为字段的修改添加逻辑,而不是在要修改或检索字段的每个位置。您还可以在班级级别控制该字段发生的情况。