Effective-Java(Item 38)之檢查引數的有效性
阿新 • • 發佈:2018-11-12
傳進方法的引數遵循陣列下標必須為非負整數
,引用物件不能為空
等原則;
如果不對傳進的引數判斷有效性,導致出現錯誤結果,通常需要花費很多時間去發現錯誤
;
檢查引數的有效性必須在方法體的開始處
執行;
對於公有方法
(api中方法)可以使用throw丟擲不合法異常,並使用Javadoc中@throws
標籤註釋因為引數不合法丟擲的異常;
對於私有方法
(非api方法)可以使用assertions
假設傳入的引數是合法的,如果引數不合法
將丟擲AssertionError
;
公有方法(java.util.Arrays#sort)
/** * @throws IllegalArgumentException if {@code fromIndex > toIndex} * @throws ArrayIndexOutOfBoundsException * if {@code fromIndex < 0} or {@code toIndex > a.length} */ public static void sort(int[] a, int fromIndex, int toIndex) { rangeCheck(a.length, fromIndex, toIndex);// 判斷引數有效性 DualPivotQuicksort.sort(a, fromIndex, toIndex - 1); }
私有方法(sort)
private static void sort(long a[], int offset, int length) {
assert a != null;
assert offset >= 0 && offset <= a.length;
assert length >= 0 && length <= a.length - offset;
... // Do the computation
}