Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby有多少错误检查是合适的?_Ruby_Error Checking - Fatal编程技术网

Ruby有多少错误检查是合适的?

Ruby有多少错误检查是合适的?,ruby,error-checking,Ruby,Error Checking,我在Ruby中实现了一些东西,我想知道有多少错误检查是合适的(或者更准确地说,应该按照约定进行多少错误检查) 例如,我正在实现一个方法,该方法交换数组中的两个元素。方法非常简单: def swap(a,b) @array[a], @array[b] = @array[b], @array[a] end 这确实很简单,但是检查给定的索引是否有效还是不必要的开销(请记住,我不希望该方法使用-1之类的环绕值)?这取决于您正在寻找的行为。您正在调用的Array#[]方法将为您执行该检查,如果您使用

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

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

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

这确实很简单,但是检查给定的索引是否有效还是不必要的开销(请记住,我不希望该方法使用-1之类的环绕值)?

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

但是,此方法将在索引为-1的情况下工作,因此,如果您不允许这样做,则需要对此进行检查


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

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

@array.fetch(a)
如果
a
是无效索引,则引发异常

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