「コードコントラクト」の版間の差分
imported>Administrator ページの作成:「'''コードコントラクト'''(英:Code Contracts)とは、.NET Framework 4.0で追加された「契約による設計」を行うため[[フレーム...」 |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| (4人の利用者による、間の10版が非表示) | |||
| 1行目: | 1行目: | ||
'''コードコントラクト''' | '''コードコントラクト'''([[英語]]:Code Contracts)とは、[[.NET Framework 4.0]]で追加された「[[契約による設計]](別名:[[契約プログラミング]])」を行うため[[フレームワーク]]およびツール群である。 | ||
== 概要 == | |||
[[事前条件]]を表す「Contract.Requires()」と、[[事後条件]]を表す「Contract.Ensures()」を覚えておけば完璧である。コードコントラクトおよび[[契約による設計]]を極めたも同然かもしれない。 | |||
実のところコードコントラクトは[[D言語]]の目玉機能の[[パクリ]]である。後発だけあって[[プログラミング言語]]レベルではなく[[ランタイム]]レベルでの実装・対応という[[C Sharp|C#]]のみならず[[VB .NET]]などでも使える汎用性の高さ実現している。個人的には[[C Sharp|C#]]より[[D言語]]の記述法の方が綺麗だと思う。 | |||
== 注意 == | == 注意 == | ||
「[[契約による設計]]」を行うために必要な静的解析ツールやドキュメント生成ツールなどは[[Visual Studio]]のお高い上位エディションでのみ動かせるという仕様であり、これらのツールがないと実行時のエラーチェックの書き方が変わるくらいで特に意味をなさない。 | |||
将来的にVisual Studioの上位エディションを導入するというのであればコードコントラクトを用いて記述しておくのも手ではある。また、もしかすると[[オープンソース]]のツールも出てくるかもしれないし、エラーチェックの書き方が一様に均一化するという[[コーディング規約]]的な意味でも積極的に使ってみる価値があるかもしれない。 | |||
== インストール == | |||
コードコントラクトで用いる[[ライブラリ]](クラス群)は[[.NET Framework 4.0]]に標準で搭載されているため、とくに何かをしなければならないということはない。 | |||
一方、[[静的解析]]などを行うためのコードコントラクトで用いるツール群([[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 名前空間に配置されている。 | コードコントラクトに関するクラス群は System.Diagnostics.Contracts 名前空間に配置されている。 | ||
== その他 == | == その他 == | ||
| 17行目: | 26行目: | ||
== 関連項目 == | == 関連項目 == | ||
* [[契約による設計]] | * [[契約による設計]] | ||
* [[Nullチェック]] | |||
[[category: プログラミング]] | |||