代码之家  ›  专栏  ›  技术社区  ›  non sequitor

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

  •  2
  • non sequitor  · 技术社区  · 15 年前

    如果使用简单的pojo,它是否真的会产生影响,或者在使用以下任一项时是否可能产生副作用:

    total = getPriorAmount() + getCurrentAmount();
    

    total = this.priorAmount + this.currentAmount;
    

    在POJO中使用时。

    4 回复  |  直到 15 年前
        1
  •  7
  •   ChssPly76    15 年前

    总有副作用:-)

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

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

        2
  •  0
  •   Drew Sherman    15 年前

    虽然从操作的角度来看没有什么不同,但我认为使用方法而不是直接引用绝对是最佳实践。您永远不知道您今天编写的简单代码何时会增长到这样的程度,即直接引用将被使用局部变量(缓存、从其他数据重新计算它等)进行更详细的操作的人破坏。

        3
  •  0
  •   blissfool    15 年前

    一般来说,不重要。

    我将使用第二个示例,因为它删除了间接性,并且您确切地知道正在访问的值。稍后,您可能会决定在返回值之前对该值执行额外的计算,从而更改getter方法的含义。(尽管在这种情况下,您应该创建新的getter方法来返回新的值…但假设你很累,只是在同一个getter中意外添加了一行。)现在,你将获得一个你可能或现在可能期望的价值。如果这可能是您想要的,并且您希望将它应用到您的代码中,那么很好,如果不是,那么您就有一个问题,或者您将在不知道的情况下得到错误的结果。

        4
  •  0
  •   Jesper    15 年前

    不幸的是,Java不支持 uniform access principle (其他语言,如C、scala和ruby,都有),因此我们不得不使用丑陋而繁琐的getter/setter语法。