1

「アサート」を使用するプログラマーを見かけることもあれば、パラメーターの null チェックを行って例外をスローすることもあります。

最良の選択肢は何ですか?

4

3 に答える 3

2

「アサート」が常に有効であるとは限らないことを常に考慮してください。これは、常に心に留めておくべき主なルールです。これは、コード内のバグ、発生してはならない予期しない状況 (事前/事後条件) を検出するためのメカニズムと考えてください。一方、呼び出し元から null 値を取得する可能性がある場合は、例外 (IllegalArgumentException) をスローします。

例えば:

  • サードパーティにライブラリを作成している場合、assert で引数を検証することはできません。
  • プライベート メソッドでは、 assert を使用して、満たす必要がある事前/事後条件を含めることができます。
于 2012-05-16T07:57:10.817 に答える
0

使い方にもよりますが、

パラメータを明示的にnullにしない場合は、アサートまたはスローする必要がありますIllegalArgusmentException

逆に、問題がない場合はnull、単純にnullでないことを確認し、フォールバック値を割り当ててコードを先に進めます

于 2012-05-16T07:52:24.717 に答える
0

私はそれをどこで読んだかわかりませんが(おそらく誰かが指摘するでしょう)、一般的なルールは次のとおりです。

1) インターフェースの場合 インターフェースは null を含むすべてのパラメーターを処理する必要があるため、null チェックを使用しますが、追加で例外をスローすることを禁止するものではありません。

2) null を引数としてとってはならないプライベート メソッドのように、例外的な状況で例外をスローします。

3)アサートを使用しますが、無効にすることができ、結果のバイトコードに含まれない可能性があるため、あまり依存しないでください。したがって、開発中に使用しますが、実際の環境では使用しません。

于 2012-05-16T08:14:00.573 に答える