gpt4 book ai didi

java - 断言可用于维护循环不变量和检查程序正确性

转载 作者:行者123 更新时间:2023-11-30 03:32:49 25 4
gpt4 key购买 nike

我最近看到this问题并认为提出问题的人在某种程度上是正确的。答案告诉我们不应使用断言来执行程序中的任何任务。

但是断言可以充当维护循环不变量和程序不变量的简单衬里,以便我们可以在一定程度上检查程序的正确性。

即使我们有 if else,为什么断言也是必要的?它只是测试一个 boolean 表达式,类似的事情可以通过 if -else 梯子来完成,那么为什么还要创建一个新的关键字断言呢?

最佳答案

“程序中的任务”在上下文中意味着应该完成并且最好进行测试的事情。

不仅是:

assert p != null

比以下内容更短更简单:

if (p == null) throw new IllegalArgumentException("p is null");

使其成为断言,清楚地记录了它是内部约束而不是指定行为的事实。因此您不需要另外 4 行来测试它。

当然,有时明确指定的行为正是您想要的,例如公共(public)长期 API。

换句话说,虽然它们很相似,但在 if/throw 正确的情况下使用断言有点错误,反之亦然。

尽管如此,许多 Java 代码并不关心断言,因为这样就少了一个需要做出的决定。我不确定如果它不存在的话它是否会被添加到语言中......

关于java - 断言可用于维护循环不变量和检查程序正确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28634192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com