Requireについて

なれてる人は当然のことだと思うけれど、何となく書いてみます。それは、「Require」の書き方。
普通は(本当に普通なのか知らないけれど)、以下のように書きますよね?

require 'nkf'

class Hoge
  def utf8(str)
    return NKF.nkf("-w8",str)
  end
end

まあ、Perlの頃からの癖が抜けないとも云いますが。この書き方は、Javaのように「1Class、1File」というポリシーで書かれたらさほど問題ないのですが、Rubyのような手軽なScript言語だと、「いちいちFile分けないよ」と言う場合もあります。しかし、Rubyオブジェクト指向言語なので、比較的「Class単位でコピペして使い回す」なんてことがあったりします。この辺が、手軽さと、きっちりオブジェクト指向の悩ましいところでもありますが。
そうしたとき、クラスをコピペしても依存しているライブラリを組み込まないと動きませんよね?
そこで以下のようにしてみるといいですよ。ちなみに、Rubyのライブラリの多くはその書き方をしていたりします。

class Hoge
  require 'nkf'

  def utf8(str)
    return NKF.nkf("-w8",str)
  end
end

クラス定義の中にrequireも含めちゃうんですね。合理的&requireがクラス定義の中に書けることに驚いた。