メソッドの実装で
特に大人数で開発をするとき、意図しない使い方をされることを防ぐために、
引数をこんな状態でわたしたらいかん!
ということを示すための手法が ガード句 ですね。
で、そのガード句をメソッド1つ1つにちまちま実装するのも大変・・
ということで、
こんなのがあります。
実装サンプル
Guard.cs
http://code.google.com/p/moq/source/browse/trunk/Source/Guard.cs
使用例
public void Foo(Bar param)
{
Guard.ArgumentNotNull(param);
}
Guard.{例外のケース}
という呼び出し方なので、シンプルでいい感じです。
これなら、コメントなくてもわかりますね。
追記 ( さんに教えていただきました)
.NET 4 からは、Code Contracts がつかえます。
つまり、こんな書き方ができます。
public void Foo(Bar param)
{
Contract.Requires(param != null); // 事前条件
Contract.Ensures( ・・・ ) // 事後条件
}
Code Contracts について詳しく知りたい方は以下を参照してください。
おおもとの記事(英語)
http://blogs.msdn.com/b/somasegar/archive/2009/02/23/devlabs-code-contracts-for-net.aspx
(翻訳記事) http://ameblo.jp/umesawaa/entry-10232889004.html
http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx
日本語でのわかりやすい解説Blog
とある契約の備忘目録。契約による設計(Design by Contract)で信頼性の高いソフトウェアを構築しよう。
http://d.hatena.ne.jp/zecl/20100131/p1
(Jamzzの日々) [品質][設計][テスト][.NET]Code ContractsとPex
http://d.hatena.ne.jp/jamzz/20100207/1265555327
(Jamzzの日々) [品質][設計][テスト][.NET]Code Contracts(契約)の使いどころ
http://d.hatena.ne.jp/jamzz/20100208/1265628882
(InfoQ)Code Contractsの使用に関する詳細
http://www.infoq.com/jp/news/2009/03/Code-Contracts-Details