私はC#コード契約の素晴らしいデモを見ました。私はそれらをmayコードに実装したいと思っています。私はすでに自分のコードでそれらを持っていたらいいと思う。どこから始めますか?コード契約を開始する場所
私はデモから印刷物を取り除くことができませんでした。任意の示唆された読書?
コード契約のある初心者のための提案はありますか?
ご協力いただきありがとうございます。
私はC#コード契約の素晴らしいデモを見ました。私はそれらをmayコードに実装したいと思っています。私はすでに自分のコードでそれらを持っていたらいいと思う。どこから始めますか?コード契約を開始する場所
私はデモから印刷物を取り除くことができませんでした。任意の示唆された読書?
コード契約のある初心者のための提案はありますか?
ご協力いただきありがとうございます。
私はDesign by Contractを記述するこのWikiから始めます。その後、MS' implementationのドキュメントを参照してください。あなたのコードに実際にそれを働かせるには、私はあなたがほとんどどこからでも始めることができると思いますが、おそらく影響が最も少ないエリアから始めましょう。したがって、必要に応じて、Contract.Requiresをいくつか追加して引数を設定してください。あなたがもっと快適になると、それらをインターフェイスに追加できますが、これは物事を吹き飛ばすかもしれないことに気づくでしょう...しかし良い方法です。エラーまたは警告はDbCに違反している可能性があり、おそらくLiskov Substitution Principleです。
Code Contractsプロジェクトページで提供されているuser manualは、コード契約の使い方と可能性について非常によく説明しています。
http://devjourney.com/blog/code-contracts-part-1-introduction/ – albertjan
.NET Framework BCLのコードコントラクト注釈が多少不自然であることに注意してください。たとえば、null以外のオブジェクトを常に返すメソッドの多くは(もちろんスローされない限り)、そのようにマークされていません。これにより、スタティックアナライザを満足させるために、ヌルチェックや 'Assume'コールでコードを浪費することになります。 – phoog
@phoog正しいですが、コードコントラクトチームはBCLにますます多くの契約を追加しようと努力していますので、ほぼすべてのリリースが改善されています。 – Andy