「共通処理をまとめたい → 基底クラス作ろう」という思考、あるある。でもそれ、だいたい2年後に技術的負債になる。私も何度もやりかけては痛い目を見てきた。
継承は「is-a」関係。動物クラスを継承した犬クラス、猫クラス。一見きれい。でも犬は吠えるけど猫は吠えない——さてどこに bark() を置く?こういう小さな歪みが積み重なって、やがて継承ツリー全体が崩壊する。
[Read more…] about なんでも継承で解決しようとするな ― Composition over Inheritance をPHPで考える