「アサート」を使用するプログラマーを見かけることもあれば、パラメーターの null チェックを行って例外をスローすることもあります。
最良の選択肢は何ですか?
「アサート」が常に有効であるとは限らないことを常に考慮してください。これは、常に心に留めておくべき主なルールです。これは、コード内のバグ、発生してはならない予期しない状況 (事前/事後条件) を検出するためのメカニズムと考えてください。一方、呼び出し元から null 値を取得する可能性がある場合は、例外 (IllegalArgumentException) をスローします。
例えば:
使い方にもよりますが、
パラメータを明示的にnullにしない場合は、アサートまたはスローする必要がありますIllegalArgusmentException
逆に、問題がない場合はnull
、単純にnullでないことを確認し、フォールバック値を割り当ててコードを先に進めます
私はそれをどこで読んだかわかりませんが(おそらく誰かが指摘するでしょう)、一般的なルールは次のとおりです。
1) インターフェースの場合 インターフェースは null を含むすべてのパラメーターを処理する必要があるため、null チェックを使用しますが、追加で例外をスローすることを禁止するものではありません。
2) null を引数としてとってはならないプライベート メソッドのように、例外的な状況で例外をスローします。
3)アサートを使用しますが、無効にすることができ、結果のバイトコードに含まれない可能性があるため、あまり依存しないでください。したがって、開発中に使用しますが、実際の環境では使用しません。