すべてのメソッドが同じパラメーターを必要とするという点で、私はしばしば呼び出し階層を持っています。それらをインスタンスレベル(クラスのメンバー)に配置したくない場合は、各メソッドでそれらの有効性をチェックすることが意味があるかどうかを常に尋ねます。
例えば:
public void MethodA(object o){
if(null == o){
throw new ArgumentNullException("o");
}
// Do some thing unrelated to o
MethodB(o);
// Do some thing unrelated to o
}
public void MethodB(object o){
if(null == o){
throw new ArgumentNullException("o");
}
// Do something with o
}
Aがパラメータを使用している場合Method
、それは明らかです。そこで、MethdoBでも有効性を確認する必要があります。ただし、MethodAがにo
与える以外に何もしない限りMethodB
、で有効性を確認することをお勧めしMethodA
ます。
チェックインの利点はMethodA
、呼び出し先が呼び出したメソッドで例外がスローされることです。これは素晴らしいことですが、必要ですか?コールスタックはこれも示します。多分それは公的、内部的、保護されているが私的な方法では意味がないのだろうか?
例としてヌルチェックを取り上げましたが、インデックス検証や範囲検証も自己の質問に該当しますが、冗長なコードの危険性があるため、制限があると思います。どう思いますか?
アップデート
AakashMの回答を通して、私は少し正確であることがわかりました。MethodA
を呼び出すだけでなくMethodB
、他のことも行いますが、とは関係ありませんo
。これを明確にするために例を追加しました。AakashMに感謝します。