この2つの方法を検討してください
public int GetSomething(object obj)
{
Contract.Requires<ArgumentNullException>(obj != null);
...
}
public int GetSomethingWrapper(object anotherObj)
{
var obj = GetObj(anotherObj);
return GetSomething(obj);
}
安全であると考えてみましょうGetObj
。つまり、例外はスローされません。
したがって、 obj が null の場合は execptionGetSomething
をスローします。GetSomethingWrapper
しかし後者の場合、例外の発生源はGetSomething
メソッドです。
問題は、チェックを追加するかどうかGetSomethingWrapper
です。
一方の側:気にするビジネスではありません。一方、両方のメソッドは公開されていますが、ラッパー メソッドの呼び出し元にはコントラクト情報がありません。