章節:方法設計
第 49 項:檢查參數有效性
- 參數限制:
方法和建構子通常對參數值有限制(例如非負索引、非空引用)。
這些限制必須在方法開始時記錄並驗證。
- 驗證的重要性:
儘早偵測錯誤,以避免方法中出現意外故障或不正確的行為。
不檢查參數的方法可能會導致難以調試的崩潰。
- 異常文件:
使用 @throws Javadoc 標籤記錄違反約束時引發的例外狀況。
常見例外:IllegalArgumentException、IndexOutOfBoundsException、NullPointerException。
參數檢查範例:
public static int mod(int x, int y) { if (y <= 0) { throw new IllegalArgumentException("Divisor deve ser positivo."); } return x % y; }
- Objects.requireNonNull 的使用:
Java 7 中引入,用於檢查物件的可空性。
傳回驗證後通過的值:
this.m = Objects.requireNonNull(m, "Parâmetro 'm' não pode ser nulo");
- 範圍檢查(Java 9):
checkFromIndexSize、checkFromToIndex 和 checkIndex 方法用於檢查清單和陣列中的索引。
彈性較差,主要用於集合。
**
assert x > 0 : "Valor de x deve ser positivo";
- 特殊情況:
建構者應始終檢查儲存參數的有效性以供以後使用。
對於成本高昂的檢查可以例外,其中檢查在計算過程中是隱式的。
- 隱式驗證範例:
Collections.sort(List) 假設物件是相互比較的。驗證發生在排序過程中。
- 異常翻譯:
當隱式檢查拋出錯誤的異常時,使用“異常翻譯”來拋出正確的異常。
- 限制的彈性:
方法應設計得盡可能通用,並施加盡可能少的限制。
- 結論:
記錄並實施方法和建構函數的參數有效性檢查。練習對於避免未來的錯誤和促進除錯至關重要。
以上是項目 檢查參數有效性的詳細內容。更多資訊請關注PHP中文網其他相關文章!