メソッドの実装で
特に大人数で開発をするとき、意図しない使い方をされることを防ぐために、
引数をこんな状態でわたしたらいかん!

ということを示すための手法が ガード句 ですね。

で、そのガード句をメソッド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.{例外のケース}

という呼び出し方なので、シンプルでいい感じです。
これなら、コメントなくてもわかりますね。


追記 (aetos さんに教えていただきました)
.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