「コードコントラクト」の版間の差分
imported>鈴木 (→概要) |
(→概要) |
||
4行目: | 4行目: | ||
[[事前条件]]を表す「Contract.Requires()」と、[[事後条件]]を表す「Contract.Ensures()」を覚えておけば完璧である。コードコントラクトおよび[[契約による設計]]を極めたも同然かもしれない。 | [[事前条件]]を表す「Contract.Requires()」と、[[事後条件]]を表す「Contract.Ensures()」を覚えておけば完璧である。コードコントラクトおよび[[契約による設計]]を極めたも同然かもしれない。 | ||
− | 実のところコードコントラクトは[[D言語]]の目玉機能の[[パクリ]]である。後発だけあって[[プログラミング言語]]レベルではなく[[ランタイム]] | + | 実のところコードコントラクトは[[D言語]]の目玉機能の[[パクリ]]である。後発だけあって[[プログラミング言語]]レベルではなく[[ランタイム]]レベルでの実装・対応という[[C Sharp|C#]]のみならず[[VB .NET]]などでも使える汎用性の高さ実現している。個人的には[[C Sharp|C#]]より[[D言語]]の記述法の方が綺麗だと思う。 |
== 注意 == | == 注意 == |
2014年8月7日 (木) 07:02時点における最新版
コードコントラクト(英語:Code Contracts)とは、.NET Framework 4.0で追加された「契約による設計(別名:契約プログラミング)」を行うためフレームワークおよびツール群である。
概要[編集 | ソースを編集]
事前条件を表す「Contract.Requires()」と、事後条件を表す「Contract.Ensures()」を覚えておけば完璧である。コードコントラクトおよび契約による設計を極めたも同然かもしれない。
実のところコードコントラクトはD言語の目玉機能のパクリである。後発だけあってプログラミング言語レベルではなくランタイムレベルでの実装・対応というC#のみならずVB .NETなどでも使える汎用性の高さ実現している。個人的にはC#よりD言語の記述法の方が綺麗だと思う。
注意[編集 | ソースを編集]
「契約による設計」を行うために必要な静的解析ツールやドキュメント生成ツールなどはVisual Studioのお高い上位エディションでのみ動かせるという仕様であり、これらのツールがないと実行時のエラーチェックの書き方が変わるくらいで特に意味をなさない。
将来的にVisual Studioの上位エディションを導入するというのであればコードコントラクトを用いて記述しておくのも手ではある。また、もしかするとオープンソースのツールも出てくるかもしれないし、エラーチェックの書き方が一様に均一化するというコーディング規約的な意味でも積極的に使ってみる価値があるかもしれない。
インストール[編集 | ソースを編集]
コードコントラクトで用いるライブラリ(クラス群)は.NET Framework 4.0に標準で搭載されているため、とくに何かをしなければならないということはない。
一方、静的解析などを行うためのコードコントラクトで用いるツール群(Visual Studioのアドオン)は.NET FrameworkおよびVisual Studioには標準では含まれず、MSDNのサイト上で別途配布になっているため、使用に際してはダウンロードのうえインストールしておく必要がある。
なお、.NET Framework 4.0の標準クラス群もコードコントラクトを使いまくっているため、Visual Studioにコードコントラクトのアドインをインストールした後は、自前で書いたソースコードにコードコントラクトが埋め込まれてなくとも、標準クラス群の使い方次第では静的解析でエラーと警告が出まくることがあり、コードコントラクト初心者は単純な「Hello World」ですらエラーを続出させると言い伝えられている。
名前空間[編集 | ソースを編集]
コードコントラクトに関するクラス群は System.Diagnostics.Contracts 名前空間に配置されている。