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