Rubyのaliasとalias_method
Rubyのaliasは文法でalias_methodはメソッドなのだけど、Railsの影響か、class内でショートカット的な役割をするメソッドはシンボルを引数に取るということが多くなっているので、
class SomeClass def old_some_method end alias new_some_method old_some_method end
と書くよりも、
class SomeClass def old_some_method end alias_method :new_some_method, :old_some_method end
と書く方が驚き最小の法則に従うと、よい気がする。
Refeによると、
Module#alias_method --- alias_method(new, old) メソッドの別名を定義します。 alias との違いは以下の通りです。 * メソッド名は文字列または Symbol で指定する * グローバル変数の別名をつけることはできない * alias は構文なのでメソッドの中では使えない self を返します。
とのことで、困りそうなのはグローバル変数の別名をつけるときだけだし。(とおもってたら、グローバルなコンテキストでメソッドを作るときに引っかかった。
でも、スピードが違ったりするのかもしれない…。
文法としてなら、
class SomeClass def old_some_method alias new_some_method end end
と書けたらよいのになぁ…。これなら古いメソッド名を明示的に書かなくてすむし、名前の変更も見やすい。