ここまでくれば、もうそれほどやること多くない。
そろそろ終わりなんですけど、Rubyの悪口まだ言い足りない。忘れる間に書いときます。
Rubyにおけるincludeとrequireの区別
http://d.hatena.ne.jp/kano4/20111005/include_require
「Rubyにおけるincludeとrequireの区別に苦労するような人には、そりゃRubyは向いてないと思う。」
そういう態度で設計された言語なんて、無くていいと思う。
滅んでいいと思う。
先に多重継承回避と、includeの有効性について書きましょう。
携帯電話を例に。
通信機器-電話-携帯
とういう継承関係で、抽象から具体へ機能をスペシフィックに絞り込んでゆく。
これ、オブジェクト指向的モデルとしては分かりやすい例。
では、
撮影機器-カメラ-携帯
これはどうだろう、間違ってはいないけど。
ちょっと違う気がする、あくまで電話にカメラの機能も付属してる気がする。
で、
携帯 include カメラ
これで、写メ撮れるってした方がスッキリハマる。
電話-携帯 は 「is a」の関係として、存在の分類。
カメラ-携帯 は「has a」の関係で、機能を持つ。
ま、そういうケースってあって、
「has a」でもただ持つよりincludeがよりハマるケースはある。
でも、「has a」はプロパティとして持つ。でいいよ全て。
その結果、
snapShot
@camera.snapShot
みたいな、ただ手続きの為に重複する書き方になったとしても。
その書き方の機能性の低さを解消するために、
「includeとrequireの区別に苦労するような人には、」って言うほどの恩恵かな。
オレには、そのバランスは悪いと見える。
言語って残念なことに人に伝えるものだから、
明快さって、そんなに犠牲にするべきことじゃねえよ。
分かる人に分かればいいってのは趣味の世界。
仕事で使われちゃうのは良くないなぁ、、Ruby。
設計者の意図汲んだ上で、
でもその考え方そのものが賛同できない。
って段階で話出来ることって、何事によらず、
2017年現代では、
その客観性もって議論するのって難しい時代だよね。
質問コーナー、お問い合わせは、sanpome.net@gmail.com まで。