java - 过度使用 Java 中的方法链

标签 java method-chaining

我看到很多 Java 开发人员和 Java 讲师编写的此类代码:

for ( int x = 0 ; x < myArray.length ; x++ )
    accum += (mean() - myArray[x]) * (mean() - myArray[x] );

我对此非常批评,因为 mean() 对数组中的每个元素都被调用了两次,而实际上它只需要被调用一次:

double theMean = mean();
for ( int x = 0 ; x < myArray.length ; x++ )
    accum += (theMean - myArray[x]) * (theMean - myArray[x]);

在 Java 中有什么优化可以让第一个例子可以接受吗?我应该停止骑乘开发人员吗?

*** 更多信息。样本数组存储为实例变量。 mean() 每次调用都要遍历数组并计算均值。

最佳答案

你是对的。您的方式(第二个代码示例)效率更高。我认为 Java 无法优化第一个代码示例以仅调用一次 mean() 并重新使用其返回值,因为 mean() 可能会产生副作用,因此,如果您的代码调用它两次,编译器将无法决定调用它一次。

关于java - 过度使用 Java 中的方法链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26494578/

相关文章:

c# - C# BinaryReader 中的 Java DataInputStream 方法

java - Hibernate ManyToMany 方法抛出 'org.hibernate.LazyInitializationException' 异常

java - 我正在使用 pdfbox-app-2.0.0-RC3 但在 PDF 解析器中使用 RndomAccessFile 时仍然出现错误

Ruby - 链接方法和返回数组

c++ - 从命名对象的构造函数链式调用成员函数

java - 模板模式,但其中一个类未实现该方法

java - 从 float 转换为整数

Javascript 类链接 map 库

JavaScript/jQuery : How to Chain a Method that uses console. 日志()

Javascript 链接和变量替换