当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《Java最佳实践-在一行上进行大数学计算?》经验,为你挑选了1个好方法。

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

    // 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(在第二个例子中可以删除,但这只是一个例子)



1> Peter Lawrey..:

如何平衡可读性和性能?

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

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是昂贵的操作,以便通过使公式简单,它也就会快得多.

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有