5
我希望计算量较小的断言始终保持打开状态,并禁用更高计算密集度的断言。实际的用例可能是当我们将代码移到生产时(根据Pragmatic Programmer,这是处理断言的建议方式)。控制Java断言 - 最佳实践
控制断言的最好方法是什么? (注意,我已经使用“-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中)?
使用在“常量”类中定义的常量变量是否更好?
有没有其他方法我没有想到?
在此先感谢。
您可以详细说明“计算密集程度较低”和“计算密集程度较高的断言?”之间的区别吗?也许给一个例子或两个? – allingeek
一个比较密集的例子是检查一个变量,例如: 'assert i <7:“i is not less than 7”;' 更高级的comp-intensive会是需要更多的处理,像在一个列表检查每一个值的平均值: '断言AVG(listOfIntegers)<7:“平均不小于7”;' 理想情况下,将关闭高-COMP密集的断言,并留在生产中的较小的。 – mtical