公共财产VS带吸气剂的私人财产?

Pou*_*uya 6 java getter properties private public

这个问题困扰了我一段时间.可以直接进入的公共财产还是带有吸气剂的私人财产?哪一个更好/更正,为什么?

Mar*_*ers 7

直接暴露领域被认为是一种不好的做法.

最好保持字段为私有,只暴露getter和setter.一个优点是您可以为getter和setter选择不同的访问级别,而一个字段只有一个访问级别.使用getter的另一个好处是它允许您在不更改类接口的情况下更改实现.

更好的是尽可能避免吸气剂和固定剂.而是使用封装更高级别行为的方法.这是因为对象不应该篡改其他对象的内部状态(通过直接访问字段,或间接通过getter和setter).

有关

  • 缺乏"为什么". (5认同)

G_H*_*G_H 5

带有吸气剂(可能还有吸气剂)的私有属性被认为是适当的样式,因为将它们声明为公共并直接使用它们会损害封装原理。它可能引起的问题之一是您直接依赖于字段的实现类型,如果需要的话,以后很难进行更改。

此外,获取器/设置器允许您在访问和变异过程中添加逻辑。您可以执行边界检查,输入验证,将空值替换为默认值...

再说一次,在很多情况下,就像大多数JavaBean用法一样,getter / setter所做的只是直接访问所要做的。因此,整个事情在JavaBeans上下文中颇有争议。

我的意见?整个问题被严重夸大了,引发的讨论量已经消耗了足够的时间和键盘笔触,以创建具有适当属性的全新Java语言规范。不要听教条,做对自己最有效的事情,不要停止思考什么有意义和什么没有意义。如果每个人都只是接受上面的单词,那么我们可能仍会在汇编中进行编码。