【问题标题】:Change to void or keep the return values更改为无效或保留返回值
【发布时间】:2012-10-31 03:57:59
【问题描述】:

我正在重构/审查 Java 应用程序

当我这样做时,我表明某些方法具有 返回值如ObjectStringBoolean等,但是 返回值不会在任何地方使用。只做了方法调用。

所以,我只是在徘徊,让它们保持原样会导致 应用程序的性能问题。

我应该将它们更改为无效还是保持原样?

【问题讨论】:

  • 如果你最终要使用返回值,你应该保留它们。如果没有,则无需保留它们。请记住,您仍然可以在带有void 的方法中使用return; 来提前退出该方法。
  • 可以解释一下当你有一个返回类型和 void 时,JVM 中实际发生了什么
  • @Baz +1 反之则不然,如果方法不是返回void,则必须放置return声明。

标签: java refactoring void return-type


【解决方案1】:
  • 除了性能受到打击之外,它不恰当的方法构造

  • 如果方法的返回值在程序中没有使用,则没有理由返回它,所以方法的返回类型应该设为void

【讨论】:

  • 可以解释一下当你有一个返回类型和 void 时在 JVM 中实际发生了什么
【解决方案2】:

我认为保持返回类型不变会降低性能。

话虽如此,我认为您仍然应该删除它们。原因是它们本质上是死代码。在这些围绕返回类型的方法中可能潜伏着未知的错误——未知,因为它们没有被使用。如果有人决定有一天使用它们,这是一种潜在的危险。

此外,如果保留它们,维护负担会增加:每次有人接触其中一种方法时,她都必须(不必要地)考虑返回类型。

这基本上归结为 YAGNI。

【讨论】:

    【解决方案3】:

    在我看来,要么是 API 使用不当,要么设计不正确。

    如果 API 设计正确,那么为什么 API 用户不使用方法返回类型?在这种情况下,用户一定是错误的。

    另一方面,如果 API 设计不正确,那么在当前状态下使用它有什么意义?如果返回的信息是多余的,则修复 API 并使方法无效。

    我认为与良好的 API 设计相比,性能方面的考虑并不重要。以后总是可以提高性能,但 API 的更改非常困难且成本高昂。

    【讨论】:

      【解决方案4】:

      如果未使用中的值,则不应返回值。请改用void。有时我会看到一些未使用的 getter,但实际上它们已被 Web 框架使用。很难确定该方法是否未被使用。即使它被使用但返回值被忽略。不忽略返回值是没有限制的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-28
        • 2016-11-23
        • 1970-01-01
        • 1970-01-01
        • 2018-05-31
        • 2022-07-27
        • 1970-01-01
        相关资源
        最近更新 更多