gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 02:47:05 25 4
gpt4 key购买 nike

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

方法选项 1

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

请注意输入参数 pTeamId 是如何在该方法的第一行中分配给私有(private)数据成员 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) 为什么一个选项比另一个更好?他们平等吗?有性能问题吗?等等

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

如有任何见解,我们将不胜感激。

最佳答案

getter 可以包含逻辑,比如不返回 null 而是返回一个空字符串。与二传手相同。

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

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

我建议总是调用 getters/setters。并且没有真正的性能损失

关于java - getter 方法 vs 直接使用输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19670347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com