我经常有调用层次结构,因为所有方法都需要相同的参数。如果我不想将它们放在实例级别(类成员),那么我总是问我在每个方法中检查它们的有效性是否有意义。
例如:
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
}
如果Method
A 使用该参数,那么它就很清楚了,我必须在那里以及在 MethdoB 中检查有效性。但是,只要 MethodA 只o
提供给它MethodB
,那么检查有效性是否也是一种好习惯MethodA
。
也签入的好处MethodA
可能是异常在被调用者调用的方法中抛出,这很好,但有必要吗?调用堆栈也会说明这一点。也许它在公共、内部、受保护的方法中有意义,但在私有方法中没有?
我以空检查为例,但索引验证或范围验证也属于自我问题,但我认为由于冗余代码的危险,存在限制。你怎么看?
更新
通过 AakashM 的回答,我发现我不太准确。MethodA
不仅电话MethodB
,它还做其他事情,但不相关o
。我添加了一个示例来澄清这一点。谢谢阿卡什M。