尽管它的预期作用只是作为返回类型,但使用可选作为方法参数一直存在争议。让我们探讨一下有利于避免这种做法的论据:
传递可选参数可能会导致方法内出现条件逻辑,从而使代码复杂化并使其难以维护。考虑以下示例:
public int calculateSomething(Optional<String> p1, Optional<BigDecimal> p2) { if (p1.isPresent() && p2.isPresent()) { return // ... logic with both values present } else if (p1.isPresent()) { return // ... logic with only p1 present } else if (p2.isPresent()) { return // ... logic with only p2 present } else { return // ... logic with both values absent } }
在Optional中包装可为空的参数会通过添加额外的抽象层而产生不必要的运行时开销。相比之下,直接使用可空参数需要的开销更少。
与可空参数相比,可选会产生额外的成本。可选包装器的存在需要额外的检查和操作,这可能会影响性能,尤其是在性能关键型应用程序中。
虽然不允许直接将 null 作为参数传递可选参数,仍然存在有人传递包含 null 的可选参数的风险。这可能会导致意外的行为和潜在的 NullPointerExceptions。
虽然将可选值作为方法参数传递可能有其支持者,但潜在的条件逻辑、不必要的包装、性能影响以及以下风险空输入通常是不受欢迎的。对于方法输入,可为 null 的参数代表更干净、更高效的替代方案。通过遵循此指南,开发人员可以提高代码的可读性、可维护性和性能。
以上是您应该避免在 Java 8 方法中使用可选参数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!