【问题标题】:Is there any logical reason for using "h = Math.min(h, h)" in Java?在 Java 中使用“h = Math.min(h, h)”有什么合乎逻辑的理由吗?
【发布时间】:2015-03-30 01:53:46
【问题描述】:

我一直在查看一些源代码,以便更好地了解我们使用的这款游戏的核心,并编写更可靠、更快的插件。然后我发现了这段奇怪的代码......

public void setMaxH(double amount) {
    super.setMaxH(amount);
    this.h = Math.min(this.h, this.h);
    ...
}

我无法理解代码中存在最后一行的任何原因,使用 Math.min,将结果分配给两个参数中使用的完全相同的变量 min... 它有什么作用吗?

【问题讨论】:

  • 我们应该假设this.h被声明为float还是double
  • 很可能是遗留代码,一些没有重构的遗留代码。
  • If the arguments have the same value, the result is that same value. If either value is NaN, then the result is NaN.
  • 查看变量名,我猜这可能是一个简单的错误,应该是Math.min( this.h, amount )
  • @biziclop 可能是,但如果不知道函数的目的就很难说。我的意思是 setMaxH 应该使用 Math.max 而不是 min。如果是“自记录代码”。

标签: java min


【解决方案1】:

public static double min(double a, double b): "返回两个双精度值中较小的一个。也就是说,结果是更接近负无穷大的值。如果参数具有相同的值,则结果是相同的值. 如果任一值为 NaN,则结果为 NaN。与数值比较运算符不同,此方法认为负零严格小于正零。如果一个参数为正零,另一个为负零,则结果是负零。”

那么,很可能是代码重构出错了。仔细检查函数并尝试了解程序员的意图是否是:

this.h = Math.min(this.h, amount);

将是唯一明智的选择。

【讨论】:

    猜你喜欢
    • 2019-10-19
    • 2010-09-22
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    相关资源
    最近更新 更多