假设我正在编写一个实用程序库,它定义了一个具有两个重载的方法:
public static class MyClass
{
public static void DoSomething(string myValue, bool myFlag)
{
Contract.Requires<ArgumentNullException>(myValue != null);
CallExternalMethod(myValue);
if(myFlag){
AlsoCallOtherMethod(myValue);
}
}
public static void DoSomething(string myValue)
{
Contract.Requires<ArgumentNullException>(myValue != null);
DoSomething(myValue, true);
}
}
作为最佳实践,我只在一种方法中定义逻辑,并使用重载来指定默认参数(.Net 3.5,我不能使用 .Net 4 默认值参数)。
如您所见,我还通过使用合同来验证输入。
由于逻辑只在第一种方法中,那么第二个 Contract 没用吗?
关于运行时检查,我知道它没用,但是静态检查器呢?理解我的模式是否足够聪明?