9

今日、C# 4.0 コード コントラクトについて読みました。メソッドへのパラメーターが null ではないことを検証するための一般的な方法は次のようです。

Contract.Requires(p != null);

ただし、コード内のすべてのインターフェイス メソッドのすべてのパラメーターに対してこれを行う必要があるのは、非常に不合理に思えます。ほとんどの場合、パラメーターは null ではないことが期待されます。いくつかの特定のパラメーターを null にすることが「許可」されている (Java の「@Nullable」アノテーションと同様に) 定義できる何らかのメカニズムがあり、Contracts フレームワークが残りのパラメーターがそうでないことを自動的に保証することを期待します。ヌル。

この「ボイラープレート チェック」(多くの「コントラクト クラス」と同様に、多くの場合、null 以外のパラメーターを除いて検証する条件がないことが多いため) の時間を大幅に節約できるだけでなく、コントラクト コードもよりクリーンになります。そしてより「論理指向」。

私の質問は、これを行う方法はありますか、そうでない場合、どこにないのか、またはおそらく私のアプローチが間違っているのはなぜですか?

4

1 に答える 1

0

同意しません。何かがまだ初期化されていないかどうか、またはデータが見つからないかどうかを確認する必要がある場合、null は非常に役立ちます。メソッドに null を渡したい場合もあります。コード コントラクトは適切です。多くのクラスを提供する一般的なメソッド、および API 定義用です。レイヤード アーキテクチャで記述する場合は、レイヤー間の相互作用を保護するだけでよく、各レイヤー内ではヌル セーフです。

あなたのドメインはnullになりました、そしてそれは大丈夫です。

于 2013-03-18T07:15:58.293 に答える