我做得很简短:
public aClass[] changeClassSlightly(aClass[] ac) {
// changing various things in the class
// changes done
return ac;
}
同时,主要是:
aClass test = new aClass();
test = changeClassSlightly(test);
所以, 当想要将某个类的功能实现到不同的类中时,这是一种效率低下/俯视或不平衡的做事方式吗?
就我而言,这里称为" aClass"这是一个相当简单的问题,但是当这些事情变得越来越大时,将整个对象稍稍改变并将其吐出来可能被视为糟糕的编程。
但是,是吗?它是Java开发中不良数据结构或常见做法的副词吗?非常感谢,并感谢与我合作:)
答案 0 :(得分:0)
我在这里看到两个不同的问题。在changeClassSlightly(...)
内部,看起来你正在谈论改变ac
参数。您的问题中的代码似乎也在询问局部变量重用,因为test
既是参数又是包含changeClassSlightly(...)
返回的值的变量。
一般来说,我个人更喜欢使用不可变对象和数据结构。我也尽量避免改变争论。请参阅 Effective Java,第15项:最小化可变性。
如果一个函数是纯函数,通常更容易推理。
但这非常属于意见问题。
至于重用本地变量:我也试图避免这样做,但无论如何这都不是什么大问题。
答案 1 :(得分:0)
从性能角度来看,您的代码并不理想。如果您可以在构造函数中设置值,则可以使用final字段(不可变,因此始终是线程安全的,并且JVM可以轻松优化)。此外,可以安全地读取构造函数中设置的值而无需同步。如果稍后使用setter,则需要同步或冒险不在其他线程中获取新值。同步并不像以前那么昂贵,但应尽可能避免。
我建议使用builder pattern。