Nao000のぶろぐ

蝶を追っている少年になりたい

リスコフの置換原則が良く分からない

ここで望まれるのは、次に述べるような置換可能な性質である:S型のオブジェクトo1の各々に、対応するT型のオブジェクトo2が1つ存在し、Tを使って定義されたプログラムPに対してo2の代わりにo1を使ってもPの振る舞いが変わらない場合、SはTの派生型であると言える。

『アジャイルソフトウェア開発の奥義 第2版』(SBクリエイティブ)より引用

これは派生型についての定義であり、「リスコフの置換原則」っと呼ばれているらしいです。どっちにしろ良く分からない。

自分のざっくり理解だと「親子関係にあるクラスで、親と子は同じ名前のメソッドを実行可能」という理解です。「現実問題この原則って守ることは可能なのか?」という感じです。業務のプログラムはガッツリ違反しています。RESTfulの例、長方形・正方形の例を見る限り、呼び出しが1つの窓口であれば良いのでは?とも思っています。全て抽象に依存していれば丸く収まるとも思っています。

いつか身体に馴染むことを願っています。

参考資料

  • 書籍「clean architecture 達人に学ぶソフトウェアの構造と設計」