1

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

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

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

这真的很简单,但是检查给定索引是否有效是 ruby​​-ish,还是不必要的开销(请记住,我不打算让该方法使用像 -1 这样的环绕值)?

4

2 回答 2

3

我无法帮助您处理负索引,但您可以使用

@array.fetch(a)

a如果索引无效,则引发异常。

fetch当我将无效索引视为“不可能发生”的情况时,我应该使用,但有时我只考虑“快乐路径”的情况。

于 2009-07-02T02:43:55.353 回答
0

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

但是,此方法适用于 -1 的索引,因此如果您想禁止该方法,则需要对此进行检查。

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

于 2009-07-02T00:53:21.613 回答