在您的班级中管理guard clause爆炸时,人们会采取哪些方法(如果有)?例如:重构警卫条款
public void SomeMethod<T>(string var1, IEnumerable<T> items, int count)
{
if (string.IsNullOrEmpty(var1))
{
throw new ArgumentNullException("var1");
}
if (items == null)
{
throw new ArgumentNullException("items");
}
if (count < 1)
{
throw new ArgumentOutOfRangeException("count");
}
... etc ....
}
在我目前正在研究的项目中,有许多类在公共方法上有一组类似的guard子句。
我知道的.NET 4.0代码契约的但是这不是我们球队目前的一个选项。
我只是发布相同的东西。唯一的问题是它把这个方法放在堆栈跟踪的顶端,而不是顶端的方法,而不是它那么大。这种模式显然可以用于不同的类型来检查一系列的值,等等...... – 2009-10-20 23:42:59
是的,这是我曾经遇到过的唯一问题。虽然很容易找到原始的调用方法。 – 2009-10-20 23:46:19
这与模拟代码合同的类基本相同。 – 2009-10-21 03:25:38