2009-07-02 44 views
1

我在Ruby中实现了一些东西,我想知道有多少错误检查是合适的(或者更准确地说,应该按照约定进行多少错误检查)?Ruby多少错误检查是适当的?

例如,我正在实现一个交换数组中两个元素的方法。方法很简单:

def swap(a,b) 
    @array[a], @array[b] = @array[b], @array[a] 
end 

这真的很简单,但它红宝石十岁上下,检查给定的指标是否有效,或者是不必要的开销(记住,我不打算对方法使用像-1这样的环绕值)?

回答

3

我不能帮你的负面指标,但可以使用

@array.fetch(a) 

引发异常,如果a是无效的指标。

我应该使用fetch当我认为一个无效索引作为“不可能发生”的情况下,但有时我只想到“快乐的路径”的情况。

0

这取决于您要查找的行为。您调用的Array#[]方法将执行该操作,检查您是否存在,如果使用的是不存在的索引,则返回nil,因此如果您需要该标准行为,则不需要复制错误检查。如果你想要别的东西,你需要实现你想要的行为。

但是,这种方法工作与索引-1,所以如果你想不允许这一点,你将需要检查。

基本上,我认为一个很好的规则是:检查你的方法行为不正确的条件,并实现你想要的行为。越界索引条件将被数组捕获并以某种方式处理 - 如果处理是正确的,则不需要执行任何操作。与该方法的某些自定义期望不匹配的索引根本不会被捕获,因此您肯定需要检查它。