【发布时间】:2023-01-10 16:00:45
【问题描述】:
我正在阅读 Effective Java Item 49。 我对使用断言来验证私有方法中的参数的示例感到有些困惑。
一些帖子解释了为什么我们可以私下使用断言,因为公共方法负责确保传递正确的参数。因此,对私有方法使用断言没有风险。
但是我们为什么不在私有方法中使用Objects.requireNonNull。
既然可以关闭断言,为什么我们仍然私下使用它,如果我们不启用它,它就不会进行验证?
【问题讨论】:
-
你可以,而且这不是一个糟糕的主意。但想法是输入来自您信任的代码,因此这只是测试问题,而不是验证问题。
-
断言通常是关闭的,但最好在测试期间打开它们。这样,如果断言不成立,测试就会失败,这意味着代码中存在错误。
标签: java assertion effective-java