【发布时间】: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。如果是“自记录代码”。