1

私はGWTをプレイしています。基本的な引数チェックを探しています。不変条件や結果の保証は必要ありません。このトピックに関するベストプラクティスについて私が興味を持っていること。

たとえば、C#では次のいずれかのオプションを使用します。

  1. if (arg1 != null) throw new ArgumentNulException....; // Official for public API;
  2. Args.NotNull(arg1); // Home grown.
  3. Contracts.Requires(arg1 != null); // Internal contract validation.

私が始めるのに最適な場所はどこですか?

さて、今のところ見つけたもの。

  1. メソッド引数を検証する
  2. アサーションを使用したプログラミング
4

3 に答える 3

2

JoshBlochによるEffectiveJavaの推奨に従って、私は通常、自分でそれを行います。

if (arg == null) throw new NullPointerException("arg cannot be null");

また

if (arg < 0) throw new IllegalArgumentException("arg must be positive");

まだ持っていない場合は、 EffectiveJavaのコピーを入手することを強くお勧めします。

于 2009-05-15T12:42:40.353 に答える
0

Design by Contractのウィキペディアのページによると、Javaを使用したこの方法論で人気のあるツールは次のとおりです。

iContract2、Contract4J、jContractor、Jcontract、C4J、CodePro Analytix、STclass、Jassプリプロセッサ、AspectJを使用したOVal、Java Modeling Language(JML)、Springフレームワーク用のSpringContracts、またはModern Jass、AspectJを使用したCustos、AspectJを使用したJavaDbC、拡張機能を使用したJavaTESK Javaの。

それらの1つを読むことはおそらく良い考えです。

私はそれらのいずれについても個人的な経験はありませんが、Pragmatic Programmerは、元のiContractについて良いことを言っているので、始めるのに良い場所かもしれません。

Javaの組み込みアサーションを使用して、いつでも自分でそれを試すことができます。

assert Expression1;
また
assert Expression1 : Expression2 ;

Expression1がブール値になり、Expression2がテストの値である場合(オプション)。やってみよう。

于 2009-05-15T12:11:54.467 に答える
0

引数のチェックだけを探している場合は、例外を含む単純なチェックが最善の解決策になるはずです。

例外は、単純なアサーションよりも処理をキャッチするための優れたソリューションを提供します。

そのシナリオでは、契約による設計ソリューションは間違いなくやり過ぎです。

于 2009-09-19T21:39:53.257 に答える