self.を多用する訳

以前、日記のネタにしたことがあるが、Ruby特にRailsのソースを見るとクラスのコンテキストでやたら"self.〜"が使われていることが解る。

def self.up
〜
とか、
〜 = self.new

他の言語に慣れた身からすると違和感があったのだが、後々クラス名が変わった際にソースコードを変更する必要が無いのでリファクタリングしやすいし、Railsに限って言えば、generateのようにコードを自動生成する際に変更する部分が少なくて済む。これって凄いスマートだ。

これに気がついた時はおおおおおっ!!と思ったのだが、Rails本を含め色々な所にイディオムとして既に書かれてた。 当たり前だよな。