作爲參考,我想指出this question是考慮如何的準備測試。什麼是驗證參數的正確順序?
讓我們以下兩種片段作爲一個例子:
public void DoSomething1(Dictionary<string, string> param1, Object param2)
{
if (null == param1)
throw new ArgumentNullException("param1");
if(!param1.Keys.Contains("somekey"))
throw new ArgumentException("param1 must contain key \"somekey\"");
if(null == param2)
throw new ArgumentNullException("param2");
// now we do some stuff
}
public void DoSomething2(Dictionary<string, string> param1, Object param2)
{
if (null == param1)
throw new ArgumentNullException("param1");
if (null == param2)
throw new ArgumentNullException("param2");
if(!param1.Keys.Contains("somekey"))
throw new ArgumentException("param1 must contain key \"somekey\"");
// now we do some stuff
}
這兩種方法都將完成該方法的內部工作同樣的保護。
我的問題是...
什麼是正確的做法/爲了驗證傳遞給方法的參數(如本例)爲什麼?
請引用備用答案。
我不認爲這有一個「正確的方法」。在這種情況下,它看起來像是一個偏好問題。 –
正確的方法是有道理的。例如,在調用'Contains()'之前,應首先檢查param1上的null異常,就像您在代碼示例中所做的那樣。 –
我瞭解這兩項工作;你應該在驗證param2之前完全驗證param1嗎?還是應該從測試中最簡單的例子到更復雜的例外? –