使用getters()或在POJO中使用直接字段访问?

时间:2009-10-08 20:18:29

标签: java

鉴于一个简单的POJO确实会产生影响,或者使用以下任何一种方法可能会产生副作用:

total = getPriorAmount() + getCurrentAmount();

OR

total = this.priorAmount + this.currentAmount;

在POJO中使用时

4 个答案:

答案 0 :(得分:7)

总有副作用: - )

在这种情况下,它可能是一个简单的POJO 现在。但是在2周(月,年)中,有人可能会为您的getter方法添加一些条件逻辑,getCurrentAmount()可能不再与this.currentAmount相同(后者可能是最后一个已知的“缓存”值,例如,getter方法可能会重新计算它。)

这就是为什么编码接口总是一个好主意,即使这种情况下的接口是对象本身(例如它的公共getter)。

答案 1 :(得分:0)

虽然从操作的角度来看几乎没有什么区别,但我认为使用方法而不是直接引用肯定是最佳做法。你永远不知道你今天写的简单代码什么时候会发展到直接引用会被某人用局部变量做更精细的事情(缓存,从其他数据中重新编译等等)。

答案 2 :(得分:0)

一般来说,没关系。

我会使用第二个例子,因为它删除了间接,你确切知道你正在访问什么值。您可能稍后决定要在返回值之前对值执行其他计算,从而更改getter方法的含义。 (虽然在这种情况下,你应该创建一个新的getter方法来返回新值......但是让我们说你累了,只是偶然在同一个getter中添加了一行。)现在,你将得到一个你可能的值或者现在可能期待。如果这可能是您想要的,并且您希望将其应用于您的代码,那么很好,如果没有那么您就会遇到问题,否则您将在不知情的情况下得到错误的结果。

答案 3 :(得分:0)

不幸的是,Java不支持uniform access principle(其他语言,如C#,Scala和Ruby),因此我们仍然坚持使用丑陋且繁琐的getter / setter语法。