4
コードコントラクトを使用する理由
私は最近、Microsoftのコードコントラクトのフレームワークに出会いました。 私は少しのドキュメントを読んで、「静的分析を実行できないことが多いため、なぜこれを実行したいのか」と絶えず尋ねてきました。 今、私はすでに次のような例外を守って、ある種の防御的なプログラミングスタイルを持っています。 if(var == null) { throw new NullArgumentException(); } また、NullObject Pattern alotを使用していますが、問題はほとんどありません。ユニットテストを追加すれば、セットアップは完了です。 アサートを使用したことも、見逃したこともありません。まったく逆です。意味のない主張がたくさんあるコードは本当に嫌いです。これは、私にとってはノイズであり、本当に見たいものから気を散らすものです。コード契約、少なくともマイクロソフトのやり方はほとんど同じです-さらに悪いことです。それらはコードに多くのノイズと複雑さを追加します。とにかく、99%で例外がスローされます。そのため、それがアサート/コントラクトのどちらなのか、実際の問題なのかは気にしません。まさに、プログラムの状態が実際に破損するケースはほとんどありません。 率直に言って、コードコントラクトを使用する利点は何ですか?何かありますか?すでにユニットテストとコードを防御的に使用している場合、契約を導入することはコストの価値がなく、メンテナーがそのメソッドを更新するときに呪いをかけるコードにノイズを入れていると感じます。無駄なアサートのため。私はまだその代価を払う正当な理由を見ていません。