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