在拥有的 class 中使用 getter 有什么好处吗?
Are there any advantages to using a getter inside the owning class?
我在一些遗留代码中发现了以下内容:
public class MyClass
{
private boolean myBool;
public boolean getMyBool()
{
return myBool;
}
public void otherMethod()
{
// some other calculations
boolean something = this.getMyBool();
// some other calculations
}
}
我是不是漏掉了什么?使用 getMyBool()
而不仅仅是直接调用 myBool
有优势吗?
因为在我看来,如果 getMyBool()
的行为发生变化,那么这个 class 将在调用此方法时背叛自己。
这不是背叛。如果你使用这个 class 并在 class 之外使用 getter/setter,改变功能也不是背叛。
想象class个人。此 class 有年龄,您想将小于零的值设置为零。您只需将 setter and/or getter 更改为适当的行为。
您真的不想将其从零以下更改为零 "sometimes"。这是原因,你应该在 class.
中调用 setter/getter
如果你想在同一个class中使用myBool;
,你可以直接使用它。但是您不能在其他 class 中使用此值,因为它的访问说明符是 Private
。我们不能使用私有成员并将其继承到其他 class。但是您可以调用 getMyBool();
方法并从中获取相同的值。它是 public 方法。我们可以从任何地方使用它。
如果getMyBool
是纯getter;也就是说,它只会检索该字段,然后对其进行方法调用就没有什么价值了。 getter 和字段之间的行为没有变化。
如果它不是一个纯粹的getter,它确实经常出现,那么方法调用是可以接受的。仅使用 getter 不会封装程序的全部意图。
其他类可能会继承这个,并用另一个实现覆盖getMyBool()
- 延迟初始化
- 使用静态属性
- 使用一些复杂的业务逻辑
- ...
另一个用例是当您想要使用方面来检测您的代码时。要么改变 getter 行为,要么记录 getters 调用...
我在一些遗留代码中发现了以下内容:
public class MyClass
{
private boolean myBool;
public boolean getMyBool()
{
return myBool;
}
public void otherMethod()
{
// some other calculations
boolean something = this.getMyBool();
// some other calculations
}
}
我是不是漏掉了什么?使用 getMyBool()
而不仅仅是直接调用 myBool
有优势吗?
因为在我看来,如果 getMyBool()
的行为发生变化,那么这个 class 将在调用此方法时背叛自己。
这不是背叛。如果你使用这个 class 并在 class 之外使用 getter/setter,改变功能也不是背叛。
想象class个人。此 class 有年龄,您想将小于零的值设置为零。您只需将 setter and/or getter 更改为适当的行为。
您真的不想将其从零以下更改为零 "sometimes"。这是原因,你应该在 class.
中调用 setter/getter如果你想在同一个class中使用myBool;
,你可以直接使用它。但是您不能在其他 class 中使用此值,因为它的访问说明符是 Private
。我们不能使用私有成员并将其继承到其他 class。但是您可以调用 getMyBool();
方法并从中获取相同的值。它是 public 方法。我们可以从任何地方使用它。
如果getMyBool
是纯getter;也就是说,它只会检索该字段,然后对其进行方法调用就没有什么价值了。 getter 和字段之间的行为没有变化。
如果它不是一个纯粹的getter,它确实经常出现,那么方法调用是可以接受的。仅使用 getter 不会封装程序的全部意图。
其他类可能会继承这个,并用另一个实现覆盖getMyBool()
- 延迟初始化
- 使用静态属性
- 使用一些复杂的业务逻辑
- ...
另一个用例是当您想要使用方面来检测您的代码时。要么改变 getter 行为,要么记录 getters 调用...