今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

アジャイルソフトウェア開発の奥義

今朝、この本をぱらぱらと見ていたら、「第14章 Template Method パターンと Strategy パターン:継承と委譲」というページが目にとまった。この章の最初のページの一部を引用する。

1995年頃には、継承は乱用されやすく、この継承の乱用によって生じるしっぺ返しはかなり高くつくことが明らかになったのだ。

これって、簡単に書かれているけどすごく重要。
でも、その章の結論では、

Template Method パターンや Strategy パターンを利用すれば、上位レベルのアルゴリズムを下位レベルの詳細から切り離すことができる。したがって、両パターンとも、上位レベルのアルゴリズムを再利用可能である。また、Strategy パターンを使った場合、Template Method パターンよりも多少余分な複雑さ、メモリ、実行時間といったコストを支払うことになるが、上位レベルだけでなく下位レベルの詳細も再利用できるというメリットがある。

という程度で簡単にまとめられていた。
結論の部分なんだから、継承を使うことによるデメリットにもしっかり触れとけばいいのにー、と思った。継承を使うことの危険性を分かってて使う分はかまわない。将来的にリスクが表面化する可能性が低いと判断されたか、または危険性と引き換えに何らかのトレードオフがあるんだろうから。
でも、個人的には「ちょっとした手間」以外のトレードオフってないんじゃないかと思うんだけど。