【发布时间】:2015-12-30 23:21:37
【问题描述】:
我想知道声明多个不需要的变量以使我的代码更具可读性是否好。以下哪个 sn-ps 是更好的编码?它计算两个质量之间的力。
// 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 比选项 2 更具可读性。
-
总是从为程序员优化开始。只有当您有证据证明存在性能问题时,您才应该尝试针对计算机进行优化。无论如何,任何体面的编译器都会为您的两种选择生成基本相同的代码。
-
我同意 Elliott 的观点——我怀疑在性能上是否存在任何差异。如果中间变量的名称能够反映它们的含义,那就更好了。在数学公式的情况下,如果短名称与出现在公式中的名称相同,那么它们可能是可以的。但是,当您在业务应用程序中拆分长表达式时,为了便于阅读,尽可能使用有意义的变量名也很有帮助。
-
您还可以为这些操作定义一个向量类。 (我很高兴在 java 中有值类)
标签: java math code-readability