我进入了一个关于 getter 和 setter 方法和封装的有趣的互联网争论。有人说他们应该做的只是一个赋值(setter)或一个变量访问(getter)来保持它们“纯”并确保封装。
- 我是否正确,这将完全违背首先拥有 getter 和 setter 的目的,并且应该允许验证和其他逻辑(当然没有奇怪的副作用)?
- 什么时候应该进行验证?
- 在设置器内部设置值时(以保护对象永远不会进入无效状态 - 我的意见)
- 在设置值之前,在设置器之外
- 在对象内部,每次使用该值之前
- 是否允许设置器更改值(可能将有效值转换为某些规范的内部表示)?
在您将此问题作为重复项关闭之前:我在这里花了很多时间搜索,但没有找到这些特定问题的任何答案。如果你能告诉我一个回答他们的问题,我很乐意删除这个问题。