1

一部のコードを変更していますが、エラーチェックに「validate」が一貫して使用されています。

Validate.notNull(x, "x cannot be empty")との違いは何if(null != x){...}ですか?また、一方の利点は何ですか?

編集:私はorg.apache.commons.lang.Validateを使用しています

4

2 に答える 2

4

編集:org.apache.commons.lang.Validateを参照していると仮定します


最初の例では、nullパラメータを使用してメソッドを呼び出すことは完全に違法であり、メソッドを使用したプログラマー側のコーディングミスでした。

2つ目は、xがnullであるかどうかによって、動作が異なるということです。

実際にこれを行っている場合は、読みやすさの問題になります。

if(null != x)
{
//...
} else {
  throw new IllegalArgumentException( "x cannot be empty");
}

その体はどれくらいになるのでしょうか?メソッドを不法に呼び出した結果が、不法に呼び出されたかどうかのチェックから物理的に分離されているのはなぜですか?さまざまな法的状態を持ついくつかのパラメーターを追加するとすぐに、他の人が理解するのが非常に難しくなる可能性があります。最初から絶対に違法であることがわかっているすべての呼び出しを明示的に拒否すると、他のプログラマーにとってはるかに友好的です。

于 2012-08-17T16:31:33.010 に答える
0

ValidateはJavaAPIに属していません。おそらく、フレームワークまたは他の誰かのクラスを使用して検証を行っています。

利点に関しては、Validate.notNull内部で何が行われているかによって異なります。名前と一致し、言われていることだけを実行することを願っています。値がnullでないかどうかを確認してください。利点は、エラーメッセージを指定できるため、コードの冗長性を減らすことができることですが、これもそのメッセージの処理方法によって異なり、メッセージのスタックに追加したり、チェックされていない例外をスローしたりする可能性があります。

于 2012-08-17T16:30:46.450 に答える