【发布时间】:2012-07-25 19:35:41
【问题描述】:
我有一个类Foo 有一个方法doSomething,它使用两个与类相关的变量b 和c,这些变量的获取/创建成本很高。我的第一个版本如下所示:
public class Foo {
private final A a;
public Foo(A a) {
this.a = a;
}
public void doSomething() {
final B b = a.getB();
final C c = b.getC();
for (int i = 0; i < 1000; i++) {
// do something with b and c
}
}
}
所以我通过类变量a 获得第一个对象(B 类型),通过第一个对象获得第二个对象(C 类型)。
现在,由于这些变量与类相关,并且该方法总是只被调用一次(尽管不一定在创建Foo 类型的对象时),所以我考虑将它们设为类变量也是如此:
public class Foo {
private final A a;
private final B b;
private final C c;
public Foo(A a) {
this.a = a;
b = a.getB();
c = b.getC();
}
public void doSomething() {
for (int i = 0; i < 1000; i++) {
// do something with b and c
}
}
}
如果这两个版本中的任何一个,我不确定要使用哪个版本。因为可以从现有的类变量a 中检索它们,所以我不知何故让这两个变量成为类成员感到不舒服。但是,它会增加 IMO 方法的可读性。
【问题讨论】:
标签: java class-variables