public void PublicMethod(FooBar fooBar)
{
if (fooBar == null)
throw new ArgumentNullException("fooBar", "fooBar cannot be null");
// log the call [added: Thanks S.Lott]
_logger.Log("PublicMethod called with fooBar class " + fooBar.Classification);
int action = DetermineAction();
PrivateMethod(fooBar, action);
}
private void PrivateMethod(FooBar fooBar, int action)
{
if (fooBar == null)
throw new ArgumentNullException("fooBar", "fooBar cannot be null"); // Is this line superfluous?
/*
Do something
*/
}
パブリック インターフェイスで入力が既にチェックされている場合、プライベート メソッドでこの種のエラー チェックをスキップしても問題ありませんか? 通常、ある程度の経験則があります...
編集:
おそらく、ArgumentNullException はあまり良い例ではありません。なぜなら、両方のレベルでチェックする必要があるが、異なるエラー メッセージを返すという引数を作成できるからです。