我有一个类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
}
}
}
所以我B
通过类变量获得第一个对象(type),通过第一个对象获得a
第二个对象(type C
)。
现在,由于这些变量与类相关,并且该方法总是只调用一次(尽管不一定在创建 type 的对象时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 方法的可读性。