使用Java的“局部变量是多余的”

新手上路,请多包涵

为什么下面给我一个“局部变量是冗余错误”?

 public double depreciationAmount() {
    double depreciationAmount = (cost * percentDepreciated);
    return depreciationAmount;
}

原文由 collint25 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

为什么下面给我一个“局部变量是冗余错误”?

因为您可以在不使用局部变量的情况下轻松编写它。

 public double depreciationAmount() {
    return cost * percentDepreciated;
}

因此,检查器认为局部变量是不必要的/多余的。


但是,我推测这 不是 编译器 _错误_。它可能是编译器 _警告_,或者更有可能是样式检查器或错误检查器警告。这是你可以忽略的东西,而不会对你的代码的正确性产生任何风险……正如所写的那样。

此外,我预测一旦代码被 JIT 编译(通过现代 Hotspot JIT 编译器……),两个版本之间将没有性能差异。


我不会尝试解决警告是否合适的问题1 。如果你觉得不合适,那么 “Local variable is redundant” using Java 解释了如何抑制它。


1 - 除了说期望当前一代样式检查器知道什么时候需要所谓的 解释变量 之外,这太过分了。首先,您需要让2组具有统计意义的开发人员就何时需要变量以及何时不需要变量的 可衡量3标准 达成一致。

2 - 是的,我知道。滥用术语。

3 - 它们 必须 是可衡量的,如果要由检查员实施,则需要就阈值应该是什么达成共识。

原文由 Stephen C 发布,翻译遵循 CC BY-SA 4.0 许可协议

虽然这里不是这种情况,但如果需要一个冗余的局部变量(我曾经遇到过这种情况 - 没有详细说明),这里是如何抑制这个特定警告。

 @SuppressWarnings("UnnecessaryLocalVariable")
public double depreciationAmount() {
    double depreciationAmount = (cost * percentDepreciated);
    return depreciationAmount;
}

原文由 seekingStillness 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题