我想知道,代码验证方法的参数在哪里——以及多久一次。
在下面的示例类(一个 .dll 库)中,您认为最好的方法是什么?假设我想验证某个对象不能是null
(但它可以是方法正常运行所需的任何其他验证)。在第 1 点中只检查一次是否更好,在用户可用的公共方法中,然后“相信我自己”,在其他私有方法中它不会为空,或者,最好有点偏执并检查它使用它的时间(在第 2、3 和 4 点)
在使用对象之前检查它(在第 2、3、4 点中)可以在将来保护我,如果我决定使用这些私有方法更改类中的某些内容,并“忘记”传递有效对象。如果我将来添加一些新的公共方法,我也不必记住验证。另一方面 - 它一遍又一遍地检查相同的条件。或者,也许您还有其他建议?
public class MyClass()
{
public MyClass()
{
}
public void ProcessObject(SomeObject obj)
{
//1. if (obj == null) throw new ArgumentException("You must provide valid object.");
DoSomething(obj);
DoMore(obj);
DoSomethingElse(obj);
}
private void DoSomething(SomeObject obj)
{
//2. if (obj == null) throw new ArgumenException("You must provide valid object.");
//do something with obj...
}
private void DoMore(SomeObject obj)
{
//3. if (obj == null) throw new ArgumentException("You must provide valid object.");
//do something with obj...
}
private void DoSomethingElse(SomeObject obj)
{
//4. if (obj == null) throw new ArgumentException("You must provide valid object.");
//do something with obj..
}
}