継承を使わずにモジュールmixinで大規模なソフトウェアを構築するのはありだと思いますか?
CRANK

可能か不可能かで言えば可能だと思います。やった方が良いかどうかというのは、「疑問が残る」というのが正直なところです。背景から説明させてください。もともとMix-inというのはLispのオブジェクト指向拡張のひとつ、Flavorsから来ています。FlavorsシステムではクラスをアイスクリームのフレーバーにたとえてFlavorと呼びました。既存のFlavorを混ぜ合わせることで新しいFlavorを作るわけです。ちなみにFlavorsシステムではすべてのFlavorのルートになるのはVanillaフレーバーです。このFlavorを「混ぜ合わせる」ことをMix-inと呼んだのですが、注意すべき点はFlavorsは多重継承のあるオブジェクト指向システムで、このMix-inは単なる継承です。ですから、オリジナルの用語では「継承を使わずにMix-inを使う」というのはおかしなことになるわけです。しかし、Flavorsシステムの利用経験から、Flavorsの使い方に以下のような制限を加えると、他重継承のめんどくさい問題(ダイヤモンド継承とか)を軽減できることがわかってきました。Mix-in対象のFlavorはインスタンスを作らないMix-in対象FlavorはMix-in対象Flavor以外から継承しないFlavorsはMix-in対象Flavorsはいくら…

jp.quora.com
Related Topics: Lisp