1. 程式人生 > >Effective-Java(Item 38)之檢查引數的有效性

Effective-Java(Item 38)之檢查引數的有效性

傳進方法的引數遵循陣列下標必須為非負整數引用物件不能為空等原則;
如果不對傳進的引數判斷有效性,導致出現錯誤結果,通常需要花費很多時間去發現錯誤
檢查引數的有效性必須在方法體的開始處執行;
對於公有方法(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
}