使用方法为对象分配修改后的版本 - 糟糕的做法?

时间:2015-09-11 14:04:33

标签: java performance class structure

我做得很简短:

public aClass[] changeClassSlightly(aClass[] ac) {
    // changing various things in the class
    // changes done
    return ac;
}

同时,主要是:

aClass test = new aClass();
test = changeClassSlightly(test);

所以, 当想要将某个类的功能实现到不同的类中时,这是一种效率低下/俯视或不平衡的做事方式吗?

就我而言,这里称为" aClass"这是一个相当简单的问题,但是当这些事情变得越来越大时,将整个对象稍稍改变并将其吐出来可能被视为糟糕的编程。

但是,是吗?它是Java开发中不良数据结构或常见做法的副词吗?

非常感谢,并感谢与我合作:)

2 个答案:

答案 0 :(得分:0)

我在这里看到两个不同的问题。在changeClassSlightly(...)内部,看起来你正在谈论改变ac参数。您的问题中的代码似乎也在询问局部变量重用,因为test既是参数又是包含changeClassSlightly(...)返回的值的变量。

一般来说,我个人更喜欢使用不可变对象和数据结构。我也尽量避免改变争论。请参阅 Effective Java,第15项:最小化可变性。

如果一个函数是纯函数,通常更容易推理。

但这非常属于意见问题。

至于重用本地变量:我也试图避免这样做,但无论如何这都不是什么大问题。

答案 1 :(得分:0)

从性能角度来看,您的代码并不理想。如果您可以在构造函数中设置值,则可以使用final字段(不可变,因此始终是线程安全的,并且JVM可以轻松优化)。此外,可以安全地读取构造函数中设置的值而无需同步。如果稍后使用setter,则需要同步或冒险不在其他线程中获取新值。同步并不像以前那么昂贵,但应尽可能避免。

我建议使用builder pattern