0

どちらの方法でも簡単なタスクを実行できますが、

改良

module StringRefinements
  refine String do
    def do_something
      "bla bla bla..."
    end
  end
end

したがって、module が であったdo_something場所ならどこでも methodを使用できます。StringRefinementsusing

モンキーパッチ

class String
  def do_something
    "bla bla bla..."
  end
end

RefinementsRuby の新しい概念と 1 つの概念の違いを知りたいMonkeypatchです。Refinementsoverを使用する利点は何Monkeypatchですか?

4

1 に答える 1

1

改良とモンキー パッチの最も大きな違いは、モンキー パッチがアプリケーション内のすべてのインスタンスを変更することです。これは、他の方法では存在しないメソッドを追加する場合は問題にならないかもしれませんが、既存のメソッドを再定義する場合は、コードの他の場所で期待を簡単に破ることができます。

using絞り込みを使用すると、メソッドを使用して絞り込みを有効にした場合にのみ、動作が変更されます。変更したメソッドが残りのコード (または依存関係) に「漏れる」ことがないため、これはより安全です。

于 2015-11-05T16:23:45.240 に答える