getter方法vs直接使用输入参数

时间:2013-10-29 22:26:30

标签: java eclipse

我在我被分配到的项目中遇到过这段代码(当然简化了)。

方法选项1

public myType getSomething(final int pTeamId) {
    this.teamId = pTeamId;
    final ClassABC classABC = new ClassABC(pTeamId);
    ...
    return myType;
}

注意如何将输入参数pTeamId分配给方法第一行中的私有数据成员teamId。请注意,这个teamId数据成员有getter和setter方法(为了简单起见,我没有打扰包含这些方法。只要知道它们是标准的getter / setter对。)

所以我想我可以用不同的方式编写这个方法,我调用我刚刚设置的数据成员的getter,而不是像在方法选项1中那样使用直接传入的输入参数:

方法选项2

public myType getSomething(final int pTeamId) {
    this.teamId = pTeamId;
    final ClassABC classABC = new ClassABC(this.getTeamId());
    ...
    return myType;
}

我意识到这个问题对某些人来说可能看起来微不足道和/或愚蠢,但是我在一个我正在修改的大型代码库中经常遇到这种情况,所以我很好奇哪种方法可以解决这个问题,方法选项1或方法选项2.

我遇到过这个帖子,但它针对的是JavaScript:speed of getter function vs direct access

我的第一个倾向是使用方法选项1,但我真的没有充分的理由,除了“它看起来更快 ...”。

其他人可以提供更好的理由吗?

具体地,

1)在这种情况下是否有适当/首选的惯例/技术/做法?

2)为什么比另一种更好?他们是平等的吗?有性能问题吗?等

我有没有问过问题? (或者这都是过度分析)?

任何见解都将受到赞赏。

1 个答案:

答案 0 :(得分:4)

getter可能有逻辑,就像不返回null而是返回一个空字符串。 与设定者相同。

直接操作变量时,不执行该逻辑。

如果有人覆盖了getter和setter逻辑,这也可能是一个问题。 (你可以通过让它们最终来禁止它)但这不是一个常见的做法! (我会更进一步,称之为反模式)

我建议总是叫getter / setters。并且没有真正的性能损失