<分区>
我想知道是否存在公共(public)字段是合理的(对于可变值)的用例,或者应该不惜一切代价避免使用并且应该始终使用 getter/setter。
假设有一个 DTO(数据传输对象)/Java Bean,它没有任何逻辑,只是保存数据(添加更多这可能是协议(protocol)的一部分,它不会改变,只会增强)。 实际上不存在要封装的实现细节,因为没有实现,只有数据。 还假设 Bean Validation 框架用于通过注释验证对象,因此没有用于验证逻辑的 setter 的目的。
为什么 setter 和 getter 会打扰我?
没有 setter/getter 更容易阅读;字段,尤其是对于内部类(您不必滚动到 setter 和 getter 即可到达其他字段)。此外,使用 user.password
而不是 Groovy 中的 user.getPassword()
更清晰。
我知道 Lombok 项目;但我已经有很多来自 Bean Validation 的注释。
因此,为了明确问题:上述场景是否适用于公共(public)领域,还是拥有 setter/getter 更好? 为什么?