說我有這樣的*的方法:當你知道你調用的方法會拋出同樣的東西時,你會拋出異常嗎?
public T GetItem(int index)
{
if (index < 0 || index >= _privateList.Count)
{
throw new ArgumentOutOfRangeException("index");
}
return _privateList[index];
}
你將包括throw
或離開它?一方面,我覺得可以立即處理無效輸入,因爲這樣可以讓您在編寫實際的實現代碼時更加自信地處理您正在處理的內容。但在這種情況下,如果邊界檢查被省略,最終結果將大致相同(列表將拋出ArgumentOutOfRangeException
而不是封閉類型)。
此外,由於上面的代碼檢查的東西,我,開發商,知道將反正檢查(在調用_privateList[index]
),看來我正在做的代碼做更多的工作比它需要到上面,基本上執行兩次完全相同的一組比較。
任何有關這個問題的指導,將不勝感激。 *具體而言,我正在談論.NET(C#),但我會想象可能會問許多不同語言/框架的相同或相似問題 - 因此是「與語言無關」的標記。
完美的答案。感謝您從多個角度提供相關的想法。 – 2010-11-04 20:49:22