Chciałbym, aby twierdzenia mniej intensywne obliczeniowo pozostały włączone przez cały czas i wyłączenie wyższych twierdzeń o intensywności obliczeniowej. Praktyczny przypadek użycia może być, gdy przeniesiemy kod do produkcji (zgodnie z Pragmatycznym Programistą, jest to sugerowany sposób obsługi twierdzeń).Kontrolowanie asercji Java - najlepsze praktyki
Jaki jest najlepszy sposób sprawdzania asercji? (Uwaga: włączono już asercje w zmiennych VM za pomocą "-ea").
Prosty przykład:
/**
*
* @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;
}
Czy to najlepiej użyć Właściwości systemu do sterowania zmienną? Jeśli tak jest, czy właściwości systemowe można ustawić dla całego projektu, a nie tylko dla konkretnej klasy (w Eclipse)?
Czy lepiej jest używać stałej stałej zdefiniowanej w klasie "Stałe"?
Czy są inne sposoby, o których nie myślę?
Z góry dziękuję.
Czy możesz rozwinąć różnicę między "mniej obliczeniowo-intensywnymi" i "wyższymi obliczeniowo-intensywnymi twierdzeniami?" Może podać przykład lub dwa? – allingeek
Przykład mniejszego obciążenia wymaga sprawdzenia względem zmiennej, np .: 'assert i <7:" i jest nie mniejsze niż 7 ";' Większy stopień kompresji byłby czymś, co wymaga więcej przetwarzania, np. sprawdzenia średniej każdej wartości na liście: 'assert avg (listOfIntegers) <7:" Średnia nie jest mniejsza niż 7. ";' Idealnie można wyłączyć kompresję -twierdzenia wzniosłe i pozostawienie na mniejszych w produkcji. – mtical