当一个实例变量要通过多个方法传递时,你应该保存一个参数吗?

时间:2016-09-26 21:34:46

标签: java oop

如果您要通过对象的多个方法传递参数,将该参数保存到实例变量是否明智?

例如:

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作为参数传递,并且 - 根据清洁代码,至少 - 方法具有的参数越少越好。

我无法想出一个坚实的骗局,但我觉得这种情况有问题。

1 个答案:

答案 0 :(得分:5)

  

如果您要通过对象的多个方法传递参数,将该参数保存到实例变量是否明智?

不,这样做是不明智的。

从设计角度来看,您建议隐藏在实例变量中的值不是该对象的属性;相反,它是给定计算的属性。因此,方法参数和/或局部变量是它所属的位置,它绝对不属于实例变量。

从实际角度来看,依赖实例变量中隐藏的值会破坏线程安全性。您不能在同一个对象上同时运行多个计算,因为每个计算都希望能够为自己的目的使用相同的实例变量。