何时在类中定义私有字段

时间:2013-07-09 06:21:57

标签: performance oop encapsulation

想象一下,类中有多个方法,所有方法都使用相同的字段,例如studentNumber。是否更好的是每次需要时获取此字段的值(来自任何可用的方法,并且不是超慢),或者将其定义为私有并初始化一次?

后者在考虑表现方面明显更好。但我的主管总是坚持认为我们应该尝试以一种独立于该方法之外的世界的方式编写方法。

任何帮助?

2 个答案:

答案 0 :(得分:1)

第二种方法存在问题。您的方法彼此依赖,因为每个方法都可以更改共享资源(字段)。这被称为公共耦合(来自wiki):

Common coupling (also known as Global coupling) is when two modules share
the same global data (e.g., a global variable).
Changing the shared resource implies changing all the modules using it.

这就是为什么我更喜欢第一种方法。

但如果您可以将字段标记为readonly并在类构造函数中为其设置值,我认为您的主管会同意这样做。

答案 1 :(得分:1)

使用成员变量向类中添加可变“状态”会使测试更加困难,并且更难以与多线程一起使用。一般来说,如果可能的话应该避免。

如果外部存储的值在对象的生命周期内永远不会发生变化,那么获取它的值并存储它并不意味着可变状态,所以你可以避免上述问题。

另一方面,当前的设计意味着您的代码与提供您使用的价值的人之间的紧密耦合。这是一种代码味道。也许一个更好的设计是移动在类之外获取值的责任,并且你会根据依赖注入的精神添加一个构造函数参数来接受它。