2005-04-24

[][]安易な継承の引き起こす問題 安易な継承の引き起こす問題 - Nao_uの日記 を含むブックマーク はてなブックマーク - 安易な継承の引き起こす問題 - Nao_uの日記 安易な継承の引き起こす問題 - Nao_uの日記 のブックマークコメント

http://www.radiumsoftware.com/0307.html#030703

開発にC++を使用するようになってから数年が経ち、最初は導入をやや渋っていた人もいたけれど、基本的な文法や継承やカプセル化などの基本的なオブジェクト指向の考え方にも少しづつ馴染んできたように思う。

しかし、根本的な設計思想や、どのようなときに継承を行うべきか、などの微妙な問題に関してはチーム全体での理解度が低く感じられることも多い。(自分もまだまだ勉強不足な点が多いのであまり偉そうなことは言えないけれど)

比較的理解の進んでいる人でも、すべてのクラスを単一の基底クラスから派生させて単一で深い継承ツリーを構築していく「一枚岩設計」に近いスタイルを好んだり、集約を使うべき場面で安易に継承を使ってしまったりなどのよくない設計を行ってしまっている場合がある。設計の不備は後の機能追加や仕様変更時に大きな問題となることが多いが、このような設計思想が絡む問題に関してはすでに動いているシステムを改修するには膨大なコストがかかる上に、まだ目に見える大きな弊害が表面化していない段階では、明確な根拠を示しながら説明しないと場合によってはある種の宗教論争的な問題のように解釈されてしまう事もある。

http://ai.eecs.umich.edu/soar/Classes/494/talks/Schumaker.pdf

上記ページからリンクの張られていた海外の大学のゲームデザインに関する講義で使われた資料のpdfに、安易な継承の弊害と、それを層化によってどのように解決するのか、という内容が非常に分かりやすくまとめられていた。(37ページからの内容)

ちょうど今このような内容が問題になっていたところなので、このpdfを資料としてありがたく使わせて貰おうと思っているけれど、海外では大学でもこんなにも実践的な講義をやっているんだな、と思うといろいろな意味で先が思いやられる。

それ以前に、自分自身のレベルアップが先決なんだろうけれど。やるべきことは多い・・・