Java 最佳实践 - 在一行中进行大量数学计算?

标签 java math code-readability

<分区>

我想知道声明多个不需要的变量以使我的代码更具可读性是否好。以下哪个片段的编码更好?它计算两个质量之间的力。

    // 1
    double dx = xPos - b.xPos;
    double dy = yPos - b.yPos;
    double r = Math.sqrt(dx*dx + dy*dy);
    double F = G * mass * b.mass / (r*r);

    // 2
    double Fx = G * mass * b.mass / Math.pow( Math.sqrt(Math.pow(2,xPos-b.xPos) + Math.pow(2,yPos-b.yPos)), 2);

如何平衡可读性和性能?在一行中加上注释是否可以?

(我意识到可以删除第二个示例中的 Math.pow( Math.sqrt( 但这只是一个示例)

最佳答案

How do I balance readability and performance?

您提供了一个很好的例子来说明为什么可读性比性能更重要。

Math.pow(2,xPos-b.xPos)

这是

2^(xPos-b.xPos)

不是

(xPos-b.xPos)^2

正如我想象的那样。

还有

Math.pow(Math.sqrt(x), 2)

只是

x

无论哪种方式,您的表达式都太复杂了,您应该简化它。

double dx = xPos - b.xPos;
double dy = yPos - b.yPos;
double F = G * mass * b.mass / (dx*dx + dy*dy);

注意:Math.powMath.sqrt 都是昂贵的操作,因此通过简化公式,它也会更快。

关于Java 最佳实践 - 在一行中进行大量数学计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34538787/

相关文章:

swift - 21如何计算! (21 阶乘)快速?

python - 异常处理 block 的正确范围

java - 代码可读性/习惯做法/设计模式?

java - 当尝试在 Eclipse 中运行程序时,启动保持在 92%

java - 使用 BeanFieldGroup 进行 Vaadin 表单验证

java - 在不损失精度的情况下转换 float 的基数

arrays - 找到成本函数比率的最佳方法

python - 如何简化一个重复的函数

java - 当我知道该类时如何正确调用方法?

java - 马文 : install results to Compilation failure