Java 使用方法为对象分配其自身的修改版本-不好的做法?
我简短地说:Java 使用方法为对象分配其自身的修改版本-不好的做法?,java,performance,class,structure,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); 所以, 当想要将某个类的功能实现到另一个类中时,这是一种效率低下/被看不起的方
public aClass[] changeClassSlightly(aClass[] ac) {
// changing various things in the class
// changes done
return ac;
}
同时,大体上:
aClass test = new aClass();
test = changeClassSlightly(test);
所以,
当想要将某个类的功能实现到另一个类中时,这是一种效率低下/被看不起的方式还是不标准的方式
在我的例子中,这里所谓的“aClass”是一个相当简单的类,但是当这些东西变得越来越大时,将整个对象取出并稍微更改它可能被认为是糟糕的编程
是吗?这是数据结构不好的征兆还是Java开发中的常见做法
提前非常感谢,也感谢你对我的支持:)我在这里看到两个不同的问题。在
changeClasslight(…)
的内部,看起来您正在讨论如何对ac
参数进行变异。您问题中的代码似乎也在询问局部变量重用,因为test
既是参数,也是包含changeClasslight(…)
返回值的变量
一般来说,我个人更喜欢使用不可变对象和数据结构。我也尽量避免改变论点。请参阅有效Java,第15项:最小化可变性
如果一个函数是纯函数,通常更容易推理
但这在很大程度上是一个意见问题
至于重用局部变量:我也尽量避免这样做,但这两种方法都没有什么大不了的。我在这里看到两个不同的问题。在
changeClasslight(…)
的内部,看起来您正在讨论如何对ac
参数进行变异。您问题中的代码似乎也在询问局部变量重用,因为test
既是参数,也是包含changeClasslight(…)
返回值的变量
一般来说,我个人更喜欢使用不可变对象和数据结构。我也尽量避免改变论点。请参阅有效Java,第15项:最小化可变性
如果一个函数是纯函数,通常更容易推理
但这在很大程度上是一个意见问题
至于重用局部变量:我也尽量避免这样做,但这两种方法都没有什么大不了的。从性能角度看,您的代码并不理想。如果可以在构造函数中设置值,则可以使用final字段(不可变,因此始终是线程安全的,并且易于JVM优化)。此外,构造函数中设置的值可以安全地读取,而无需同步。如果以后使用setter,则需要同步,否则可能无法在其他线程中获得新值。同步不像以前那样昂贵,但应该尽可能避免
我建议改为。从性能角度看,您的代码并不理想。如果可以在构造函数中设置值,则可以使用final字段(不可变,因此始终是线程安全的,并且易于JVM优化)。此外,构造函数中设置的值可以安全地读取,而无需同步。如果以后使用setter,则需要同步,否则可能无法在其他线程中获得新值。同步不像以前那样昂贵,但应该尽可能避免
我建议你改为。你的类型让我有点困惑。该方法具有返回类型
aClass[]
,但您将其视为返回了aClass
。您的类型让我有点困惑。该方法具有返回类型aClass[]
,但您将其视为返回aClass
。