3

私には Java のバックグラウンドがあり、Java では、プログラマーが間違ったパラメーターでメソッドを呼び出すと、例外がスローされます。Rubyプログラマーは間違ったメソッド引数をどのように扱いますか?

コア クラスからの 2 つの反対の例:

irb(main):009:0> "" * (-2)
ArgumentError: negative argument
        from (irb):9:in `*'
        from (irb):9
        from C:/Ruby/Ruby193/bin/irb:12:in `<main>'


irb(main):013:0> (-2).times { puts 'hello' }
=> -2
4

1 に答える 1

3

私は通常、Ruby での引数の検証を避ける傾向があります。

ただし、それは実際には、主な目的が何であるかによって異なります。信頼性が心配な場合は、防御的に行動し、引数が回復不能なエラーにつながるときはいつでも例外を発生させます。

また、ユースケースによって異なります。

  • それらはパブリック API ですか? 検証を強く検討することができます。
  • それらはプライベート API/メソッドですか? まあ、私は一般的にプログラマーを信頼します。

有効なアプローチは、デバッグ フェーズで引数チェックを使用することです。これは、API のバグや誤用を検出するのに役立ち、テストが完了したらチェックを削除します。

要するに、このトリッキーな質問に対する完璧な答えはありません。コンテキストと開発者の個人的な判断の両方に大きく依存します。

于 2012-12-30T01:16:06.293 に答える