0

重複の可能性:
.net 4.0 コード コントラクト。いつ使う?彼らはいつ時間の無駄ですか?

.NET コード コントラクトの完全なドキュメントを読み始めたところ、コントラクトに対応するコードを発行しないようにコンパイラを指定できることに気付きました。しかし、なぜ誰かがそれをしたいのだろうと思っていました! つまり、ドキュメントから、コード コントラクトは、コードに関する事前/事後/不変条件を指定することに関するものです。

別の質問.net 4.0 Code Contracts を見てください。いつ使う?彼らはいつ時間の無駄ですか?、契約はオブジェクトの無効な状態から保護する必要があるようですが、もう一度、なぜそれらを無効にしたいのでしょうか! そうすることで、山のような問題への扉を開くことになるのではないでしょうか?

startDate <= endDate古き良きif-then-throwをビジネスに使用する必要があるかどうかを確認するなど、ビジネス検証として使用する必要がありますか? コード コントラクトを無効にすると、クラスが無効な状態になる可能性があります。

私の質問は残っていますが、なぜコード コントラクトを無効にしたいのでしょうか?

4

2 に答える 2

1

私が考えることができるシナリオの 1 つは、テストに費用がかかる条件がある場合、パフォーマンス向上のために、リリース ビルドで無効にすることをお勧めします。

于 2012-11-07T19:45:13.460 に答える
0

同じ理由Debug.Assert()で、リリース ビルドにコンパイルされません。致命的ではない無効な状態を検出できる場合があり、一部のアプリケーションでは実行を継続することが望ましい動作です。リリース ビルドでコード コントラクトを維持することは、Trace.Assert().

私は自分のコードが無効な状態でどうにかして生き残るように計画しようとさえしていないので、個人的には常に契約を守っています。

于 2012-11-07T19:50:41.830 に答える