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