タグ

ブックマーク / tocsworld.wordpress.com (2)

  • C#での契約プログラミング – おまけ

    前回紹介したCode Contract、動的なコントラクトの一部をご紹介しましたが他にも「インターフェースに対してコントラクトを設定する」とか、付加情報をもっと付けるとか、色々あります。また、動的な解析以外にも [静的な解析] および、[doc出力機能] が備わっています。これらをさらっと見ておきます。 1.静的な解析 これはCodeContractをインストールした上で、プロジェクトのプロパティから[Code Contracts]を選択し、Static Checkingにチェックを付けます。 コントラクトが静的に守られているかをチェックしてくれるものです。例えば、public APIのXMLドキュメントが用意されていなかったら、 こんな感じでWarningが出てきます(アウトプットウィンドウにも)。無効化したい場合は namespace CodeContractSample { usin

    C#での契約プログラミング – おまけ
    mima3
    mima3 2015/05/22
    sandcastelつかうと事前条件等をドキュメントとして出力できるのか。
  • C#での契約プログラミング

    オブジェクト指向クラス設計原則のSOLIDのL(LSP:リスコフ置換原則)は、一言で言うなら 『サブクラスはスーパークラスと等価に扱えないといけない』 ということ。なんでそれが必要かというと、親クラスと子クラスで同じ関数に対する振る舞いが違うと、ポリモーフィックに扱えなくなり、その結果実行時の型情報(RTTI)を使った処理を書くハメになる、そうすると継承のメリット・必要性が失われるから。 インターフェースも継承も契約なため、静的な型付けをベースとするC#に「契約プログラミングは」は適していると思います。それが.NET4.0から標準に近い形で組込まれていたことを知りましたのでご紹介。 Code Contract for.NETをダウンロード & インストール。 インストールはNext/Accept連打でOKです。これをインストールするとVisualStudioのプロジェクトのプロパティに [

    C#での契約プログラミング
    mima3
    mima3 2015/05/22
    コードコントラクト。まぁ、最悪、事前条件を自前で容易すりゃええか。
  • 1