タグ

継承とMix-inに関するbigbroのブックマーク (2)

  • Mixinは有害か? - Sooey

    Mixinは有害か? ちょっと前のときどきの雑記帖で紹介されていたMixins considered harmfulシリーズが面白そうだったので1と2を読んでみた。 Mixins considered harmful/1 Mixins considered harmful/2 Mixins considered harmful/3 Mixins considered harmful/4 以下、かんたんなまとめ。 Mixinを使いすぎるとクラス階層が爆発して、1クラスに数百メソッドなんて状況が頻発する IDEのキーワード補完や、自動生成したAPIドキュメントが役立たずになる Mixinはフレームワーク作成者にとっては便利 作成者はクラスの階層・関係が頭に入っているから Mixinはフレームワーク利用者には不便 フレームワークのバグや挙動を調べようと深みに入ると処理を追い切れなくなる 比較的小

    bigbro
    bigbro 2009/12/29
    すごく納得。少なくともインターフェイスのある言語でMix-inを実装するのはナンセンス
  • まつもと直伝 プログラミングのオキテ 第3回(3)

    図7 Mix-inによるStreamクラスの構築例<BR>クラス階層はツリー構造を保ちつつ,コードのコピーも避けている。 継承には2つの意味がある Javaのような静的型のオブジェクト指向言語の変数には,変数を介して呼び出されるメソッドを制限する働きがありました。ただし,制限がかかるのは「どのようなメソッドを持っているか」であって,「どのように実装されているか」ではありません。 今まで一まとめにして継承と呼んできましたが,実は継承には2つの異なる概念が含まれています。一つは,「どのようなメソッドを持っているか」あるいは「どのように振る舞うか」ということに着目した「仕様の継承」です。 もう一つは「どのようなデータ構造を使い,どのようなアルゴリズムで処理するか」ということに着目した「実装の継承」です。 静的型言語では両者の区別が重要になります*4。Javaでもこの2つを明確に区別しており,実装

    まつもと直伝 プログラミングのオキテ 第3回(3)
  • 1