「コードコントラクト」の版間の差分
imported>Administrator |
(→概要) |
||
(3人の利用者による、間の7版が非表示) | |||
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 | + | 将来的にVisual Studioの上位エディションを導入するというのであればコードコントラクトを用いて記述しておくのも手ではある。また、もしかすると[[オープンソース]]のツールも出てくるかもしれないし、エラーチェックの書き方が一様に均一化するという[[コーディング規約]]的な意味でも積極的に使ってみる価値があるかもしれない。 |
− | |||
== インストール == | == インストール == | ||
13行目: | 17行目: | ||
* http://msdn.microsoft.com/ja-jp/devlabs/dd491992.aspx | * http://msdn.microsoft.com/ja-jp/devlabs/dd491992.aspx | ||
− | なお、[[.NET Framework 4.0]]の標準クラス群もコードコントラクトを使いまくっているため、[[Visual Studio]]にコードコントラクトのアドインを[[インストール]]した後は、自前で書いた[[ソースコード]]にコードコントラクトが埋め込まれてなくとも、標準クラス群の使い方次第では[[静的解析]]で[[エラー]]と[[警告]] | + | なお、[[.NET Framework 4.0]]の標準クラス群もコードコントラクトを使いまくっているため、[[Visual Studio]]にコードコントラクトのアドインを[[インストール]]した後は、自前で書いた[[ソースコード]]にコードコントラクトが埋め込まれてなくとも、標準クラス群の使い方次第では[[静的解析]]で[[エラー]]と[[警告]]が出まくることがあり、コードコントラクト初心者は単純な「[[Hello World]]」ですらエラーを続出させると言い伝えられている。 |
== 名前空間 == | == 名前空間 == | ||
コードコントラクトに関するクラス群は System.Diagnostics.Contracts 名前空間に配置されている。 | コードコントラクトに関するクラス群は System.Diagnostics.Contracts 名前空間に配置されている。 | ||
− | |||
− | |||
− | |||
== その他 == | == その他 == | ||
25行目: | 26行目: | ||
== 関連項目 == | == 関連項目 == | ||
* [[契約による設計]] | * [[契約による設計]] | ||
+ | * [[Nullチェック]] | ||
== 参考文献 == | == 参考文献 == | ||
− | + | {{reflist}} | |
− | |||
− | |||
{{stub}} | {{stub}} |
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 名前空間に配置されている。