どうしても納得がいかない仕様。それはModule
私はRubyのModuleの仕様がどうしても納得がいきません。いや、わからないんじゃないんです。作れ、使え、と言われたら作れますし、使えます。
たまに、RubyのModuleってJavaのInterfaceみたいなものという人がいるんですが、ぜんぜん違うと思うのですよね。JavaのInterfaceって、
インタフェース決めといたから、あとは勝手に実装して。
って言ってるようなものじゃないですか。でも、RubyのModuleって、
インタフェース決めたんだけど、実装も決めといた。
って感じがするのです。う〜む。
たとえば、Enumerable。これをMix-inするには、eachメソッドを実装してなきゃいけないわけじゃないですか。でも、eachを使わずに独自に実装したほうが効率がいいメソッドもあるわけですよ。というか、そうそうeachみたく汎用に使えるメソッドなんてあるのか? と思っちゃいます。
別にEnumerableみたくなんかのメソッドを必要としないモジュールもあるわけですが、それは単なる記述量減らし? なんて思ったりして……。
たぶん、理解が足りないだけだろうとは思うんですけどね。
スクリプト言語よりな見方をしてしまえば、JavaのInterfaceなんて、コンパイルエラー外し以外の何ものでもないわけで、何がうれしいのかわからないと思ってる人がいるように、私もいまだにRubyのModuleのよさがわかりません。