gpt4 book ai didi

java - 控制 Java 断言 - 最佳实践

转载 作者:搜寻专家 更新时间:2023-10-31 20:29:44 24 4
gpt4 key购买 nike

我希望始终保持计算强度较低的断言并禁用计算强度较高的断言。一个实际的用例可能是当我们将代码移至生产环境时(根据 Pragmatic Programmer 的说法,这是处理断言的建议方式)。

控制断言的最佳方式是什么? (请注意,我已经使用“-ea”在 VM 变量中启用了断言。

一个简单的例子:

/**
*
* @precondition sizeOfList >= 2
*/
private ArrayList<Integer> createSortedList(int sizeOfList){
ArrayList<Integer> results = new ArrayList<Integer>();

for(int i = 0; i<sizeOfList; i++){

<algorithm to add sorted numbers to array>

}

if(<some_flag>)
assert results.get(0) < results.get(1) : "Results are not sorted.";

assert results.size() == sizeOfList : "Results-list size does not equal requested size.";

return results;
}

最好使用系统属性来控制变量吗?如果是这种情况,是否可以为整个项目设置系统属性,而不仅仅是特定类(在 Eclipse 中)?

使用“常量”类中定义的常量变量是否更好?

还有其他我没有想到的方法吗?

提前致谢。

最佳答案

assert 语句的定义特征是它可以被关闭,所以我只会将它用于不应该总是运行的断言。对于始终运行的断言,我会做类似的事情:

if (results.size() != sizeOfList)
throw new AssertionError("Results-list size does not equal requested size.");

然后,您可以通过 -ea JVM 选项启用/禁用昂贵的断言。

关于java - 控制 Java 断言 - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12588821/

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