1

私は Ruby でいくつかのことを実装していますが、どの程度のエラー チェックが適切であるか (または、より正確には、規則によってどの程度のエラー チェックを実行する必要があるか) 疑問に思っていました。

たとえば、配列内の 2 つの要素を交換するメソッドを実装しています。方法は非常に簡単です。

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

それは本当に簡単ですが、与えられたインデックスが有効かどうかをチェックするのはルビーっぽいですか、それとも不必要なオーバーヘッドですか (私はメソッドが -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 に答える