home wiki.fukuchiharuki.me
Menu

継承は使うべきでない

が僕の基本スタンス。 という心構え。 共通処理をスーパークラスにもたせるためのそれはとりわけネガティブ。

理由は以下。

  • 処理の流れが読みづらくなる
  • サブクラスによる分岐が生じてスーパークラスの役割が肥大化する
  • 肥大化するスーパークラスに合わせてサブクラスの役割も増える

結果として取ってつけたようなギスギスした親子関係が出来上がってしまう。 フラグによる分岐を巧みにこなすスーパークラスとフラグを立てることに必死なサブクラス。 この疎通の流れを読み解き親子の関係を明らかにすることは極めて困難。

継承を使ってうれしいのは

インタフェースを見る側(メソッドをコールする側)。 だと思う。

※ここでどのような継承を使って誰が使うかを述べて

結果こうなる。

  • 処理の流れがインタフェースを見る側だけの役割になる
  • 分岐中の局所的な処理がサブクラスだけの役割になる
  • 分岐がファクトリ(や依存性注入)だけの役割になる