在您的班級中管理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