0

想象一个类中有几个方法,所有方法都使用相同的字段,例如studentNumber. 每次需要时都获取该字段的值(从任何可用的方法,并且不是超级慢)更好,还是将其定义为私有并初始化一次?

后者显然具有更好的考虑性能。但我的主管始终坚持认为,我们应该尝试以一种独立于该方法之外的世界的方式来编写方法。

有什么帮助吗?

4

2 回答 2

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并在类构造函数中为其设置一个值,我认为您的主管会同意这没关系。

于 2013-07-09T06:40:23.080 回答
1

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

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

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

于 2013-07-09T07:11:22.973 回答