我經常擁有調用層次結構,因爲所有方法都需要相同的參數。如果我不想將它們放在實例級別(類的成員),那麼我總是問我是否有意義在每種方法中檢查它們的有效性。函數中的重複參數檢查
例如:
public void MethodA(object o){
if(null == o){
throw new ArgumentNullException("o");
}
// Do some thing unrelated to o
MethodB(o);
// Do some thing unrelated to o
}
public void MethodB(object o){
if(null == o){
throw new ArgumentNullException("o");
}
// Do something with o
}
如果Method
A使用的參數,那麼它的清晰,我必須有,並檢查有效性MethdoB。但是,只要MethodA沒有更多地使用o
而不是MethodB
,在MethodA
中檢查有效性也是一種好的做法。
在MethodA
也檢查的優勢可能是異常拋出被調用者調用的方法,這很好,但它是否有必要?調用堆棧也會說明這一點。也許它的意義在公共,內部,受保護但不是私人方法?
我以空檢查爲例,但索引驗證或範圍驗證屬於自我問題,但我認爲由於冗餘代碼的危險而存在限制。你怎麼看?
UPDATE
通過我已經看到了,我是有點精確AakashM的答案。 MethodA
不僅呼叫MethodB
,它也做其他事情,但不涉及o
。我添加了一個例子來澄清這一點。謝謝AakashM。
產生輸入值的地方 - 在調用者意味着什麼?我想要寫我的例子的例子是,方法A和B都可以從類的外部訪問,並且它的合法調用其中的一個(MethodA執行相同,比MethodB稍微多一點) – HCL 2010-07-14 11:01:53
是的。看我的編輯。 – Mau 2010-07-14 11:21:16