如果变量通过多个方法传递,但只在最后一个方法中使用;将此变量声明为类的属性是否更好?
我觉得通过例子可以更好地问这个问题,所以: 示例#1
public class eg1 {
private int circleSize;
void a() {
circleSize = ...
b();
}
void b() {
...
c();
}
void c() {
... circleSize ...
}
}
例#2
public class eg2 {
void a() {
int circleSize = ...
b(circleSize);
}
void b(int circleSize) {
...
c(circleSize);
}
void c(int circleSize) {
... circleSize ...
}
}
是否有某种方式应该使用?为什么?
编辑:似乎这个问题是情境的,基于意见的。无论采用哪种方式,都有一些好处。
如果您只想在一个方法中使用该变量,那么您无需将其设置为私有,这会将其暴露给所有其他方法。通过选择传递变量而不是将其设为私有:
答案非常广泛,但通常你可以遵循得墨忒耳法则:
- 每个单位应该对其他单位的知识有限:只有与当前单位“密切”相关的单位。
- 每个单位只应与其朋友交谈;不要和陌生人说话。
- 只与你的直接朋友交谈。
https://en.wikipedia.org/wiki/Law_of_Demeter
因此,在这种特殊情况下,请使用参数。由此产生的应用程序将更易于理解和更容易理解。