章: メソッド設計
項目 49: パラメーターの有効性の確認
- パラメータの制限:
メソッドとコンストラクターには通常、パラメーター値 (負でないインデックス、null でない参照など) に関する制限があります。
これらの制限は、メソッドの開始時に文書化して検証する必要があります。
- 検証の重要性:
メソッド内の予期せぬ失敗や不正な動作を回避するために、できるだけ早くエラーを検出してください。
パラメータをチェックしないメソッドは、デバッグが困難なクラッシュを引き起こす可能性があります。
- 例外ドキュメント:
@throws Javadoc タグを使用して、制約違反の場合にスローされる例外を文書化します。
一般的な例外: IllegalArgumentException、IndexOutOfBoundsException、NullPointerException.
パラメータチェック例:
- Objects.requireNonNull:
の使用法 Java 7 で導入され、オブジェクトの null 可能性をチェックするために使用されます。
検証後に渡された値を返します:
- 範囲チェック (Java 9):
リストと配列のインデックスをチェックするための checkFromIndexSize、checkFromToIndex、および checkIndex メソッド。
柔軟性は低く、主にコレクションに使用されます。
**
- 特殊なケース:
ビルダーは、後で使用するために、保存されたパラメータの有効性を常にチェックする必要があります。
計算中に暗黙的にチェックが行われる場合、コストのかかるチェックについては例外が設けられます。
- 暗黙的な検証の例:
Collections.sort(List) は、オブジェクトが相互に比較できることを前提としています。検証は並べ替えプロセス中に行われます。
- 例外の翻訳:
暗黙的なチェックで間違った例外がスローされる場合は、「例外変換」を使用して正しい例外をスローします。
- 制限の柔軟性:
メソッドはできる限り一般的になるように設計し、必要最小限の制限を課す必要があります。
- 結論:
メソッドとコンストラクターのパラメーターの有効性チェックを文書化して実装します。今後のエラーを回避し、デバッグを容易にするためには、練習が不可欠です。
以上が項目 パラメータの妥当性チェックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。