我在Ruby中实现了一些东西,我想知道有多少错误检查是合适的(或者更准确地说,应该按照约定进行多少错误检查)?Ruby多少错误检查是适当的?
例如,我正在实现一个交换数组中两个元素的方法。方法很简单:
def swap(a,b)
@array[a], @array[b] = @array[b], @array[a]
end
这真的很简单,但它红宝石十岁上下,检查给定的指标是否有效,或者是不必要的开销(记住,我不打算对方法使用像-1这样的环绕值)?
我在Ruby中实现了一些东西,我想知道有多少错误检查是合适的(或者更准确地说,应该按照约定进行多少错误检查)?Ruby多少错误检查是适当的?
例如,我正在实现一个交换数组中两个元素的方法。方法很简单:
def swap(a,b)
@array[a], @array[b] = @array[b], @array[a]
end
这真的很简单,但它红宝石十岁上下,检查给定的指标是否有效,或者是不必要的开销(记住,我不打算对方法使用像-1这样的环绕值)?
我不能帮你的负面指标,但可以使用
@array.fetch(a)
引发异常,如果a
是无效的指标。
我应该使用fetch
当我认为一个无效索引作为“不可能发生”的情况下,但有时我只想到“快乐的路径”的情况。
这取决于您要查找的行为。您调用的Array#[]
方法将执行该操作,检查您是否存在,如果使用的是不存在的索引,则返回nil,因此如果您需要该标准行为,则不需要复制错误检查。如果你想要别的东西,你需要实现你想要的行为。
但是,这种方法将工作与索引-1,所以如果你想不允许这一点,你将需要检查。
基本上,我认为一个很好的规则是:检查你的方法行为不正确的条件,并实现你想要的行为。越界索引条件将被数组捕获并以某种方式处理 - 如果处理是正确的,则不需要执行任何操作。与该方法的某些自定义期望不匹配的索引根本不会被捕获,因此您肯定需要检查它。