如果您要通过对象的多个方法传递参数,将该参数保存到实例变量是否明智?
例如:
public class Example {
private int[] array;
public void doThingsToArray(int[] array) {
this.array = array;
// `array` doesn't need to be passed as an argument.
doFirstThingToArray();
doSecondThingToArray();
...
}
...
}
在这种情况下,Example
的同一个实例将用于在多个数组上调用doThingsToArray()
,因此您不能将array
作为参数传递给Example
的构造函数。
我可以看到的是,您不必将array
作为参数传递,并且 - 根据清洁代码,至少 - 方法具有的参数越少越好。
我无法想出一个坚实的骗局,但我觉得这种情况有问题。
答案 0 :(得分:5)
如果您要通过对象的多个方法传递参数,将该参数保存到实例变量是否明智?
不,这样做是不明智的。
从设计角度来看,您建议隐藏在实例变量中的值不是该对象的属性;相反,它是给定计算的属性。因此,方法参数和/或局部变量是它所属的位置,它绝对不属于实例变量。
从实际角度来看,依赖实例变量中隐藏的值会破坏线程安全性。您不能在同一个对象上同时运行多个计算,因为每个计算都希望能够为自己的目的使用相同的实例变量。