说我有这样的*的方法:当你知道你调用的方法会抛出同样的东西时,你会抛出异常吗?
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