章: メソッド設計
項目 49: パラメーターの有効性の確認
- パラメータの制限:
メソッドとコンストラクターには通常、パラメーター値 (負でないインデックス、null でない参照など) に関する制限があります。
これらの制約は文書化され、メソッドの開始時にチェックされる必要があります。
- 検証の重要性:
メソッド内の予期せぬ失敗や不正な動作を回避するために、できるだけ早くエラーを検出してください。
パラメータをチェックしないメソッドは、デバッグが困難なクラッシュを引き起こす可能性があります。
- 例外ドキュメント:
@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 で導入され、オブジェクトの null 可能性をチェックするために使用されます。
検証後に渡された値を返します:
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 中国語 Web サイトの他の関連記事を参照してください。