第8回「オブジェクト指向設計実践ガイド」読書会に参加したけど第7回の補講をやりました

12/13 NSEGの「オブジェクト指向設計実践ガイド」読書会の第8回に参加しましたが、行ってみたら参加者3人だったので延期になりました。

が、3人とも前回欠席だったので、補講(?)として第7章を読みました。

第6章のクラスに続いて第7章はモジュールの話でした。Rubyのモジュールには色んな用途がありますが、ここでは mix-in としての用途の話です。

オブジェクトのメソッドについて、

探索は階層構造の頂点へとスーパークラスを 1 つ 1 つさかのぼっていき、最終的に Object クラスを探索します。そこでもメソッドが見つからなかった場合、つまり適切なメソッドを見つける試みがすべて失敗に終わった場合は、そこで探索が終わると思うかもしれません。しかし多くの言語には、メッセージを解決するための第二の方法が備わっています。

として、Ruby の method_missing メソッドが説明されてたけど、Ruby以外の「多くの言語」には何があるんだろう…。Java や Python にも Ruby の method_missing 相当のものがあるんだろうか。

[追記] Python でも似たようなことはできるらしい。

全般的に書いてあることは納得できるし、Ruby でプログラムを作る場合には気にした方がいいことだとは思ったのですが、実は Ruby のようなかなり自由な言語じゃなければ、言語仕様レベルで強制されて気にしなくてもそれなりにちゃんとした設計になるんじゃないかとも思ったり…。


延期になった第8回は 12/27 です。もしかしたら終わったあとに軽く忘年会風のことをやるかもしれません。

nseg.connpass.com