4

C# で作業しているとき、拡張メソッドを作成すると非常に便利であることがわかりました。Ruby では、次のようになります。

class Fixnum
  is_divisible? divisor
    self % divisor == 0
  end
end

しかし、このように組み込み型を拡張する人は見当たりません。

非拡張の方法は次のようになります。

def is_divisible? dividend, divisor
  dividend % divisor == 0
end

is_divisible?(i, 5)2 番目の方法は ( ) と比較して読みにくいように思えi.is_divisible? 5ます。または、i.is_divisible_by? 5.

この種のことを行うための、より雄弁な Ruby 風の方法はありますか? または、最初の方法が好ましい方法ですか?

4

1 に答える 1

4

これは些細な例ですが、モンキー パッチは通常問題ありません。クラスの名前空間にメソッドを配置する方が、何もないところに浮かんでいるよりも優れています。

他の人が使用する予定の gem や何かを書いている場合、あなたのモンキー パッチが彼らのモンキー パッチに干渉する可能性があることを心に留めておいてください。

このような単純なケースでは、安全のために避ける方がよいでしょう。

于 2012-09-07T03:16:33.543 に答える