2 つのオーバーロードを持つメソッドを定義するユーティリティ ライブラリを作成しているとします。
public static class MyClass
{
public static void DoSomething(string myValue, bool myFlag)
{
Contract.Requires<ArgumentNullException>(myValue != null);
CallExternalMethod(myValue);
if(myFlag){
AlsoCallOtherMethod(myValue);
}
}
public static void DoSomething(string myValue)
{
Contract.Requires<ArgumentNullException>(myValue != null);
DoSomething(myValue, true);
}
}
ベスト プラクティスとして、1 つのメソッドだけでロジックを定義し、オーバーロードを使用して既定のパラメーターを指定します (.Net 3.5、.Net 4 の既定値パラメーターは使用できません)。
ご覧のとおり、コントラクトを使用して入力も検証しています。
ロジックは最初の方法だけなので、2番目のコントラクトは役に立たないのですか?
実行時チェックに関しては、駄目なのはわかっていますが、静的チェッカーはどうでしょうか。私のパターンを理解するのに十分賢いですか?