目的
エンジニア2年目で、コードの共通化に関して悩み始めたため、勉強し始めた。
背景
前回、密結合に関して記事を書いたが、継承にも問題点が多いらしいため、継承についてシンプルに記載したい。
本文
継承の問題点
・スーパークラスを変更すると、サブクラスに影響が出る。
・スーパークラスはサブクラスのことを考えずに変更しがち。
・サブクラスがスーパークラスのメソッドを使用できるようになるため、共通ロジック置き場になりやすい。
思い当たる例
・基底クラスとサブクラスがある時に、基底クラスのメソッドをオーバーライドして、得たい機能を実現していく。
・しかし、オーバーライド実装には、基底クラス側のロジックを知っていないとできない。
・このように関連知識が基底と継承それぞれに分離しているものは、良い設計とは言えないとこのこと。
改善方法
・下手に継承を使わず、単一責任原則を重要にすること
・値オブジェクト、コンポジション構造で設計できないか検討すること。
次のアクション
何が問題で何が正解なのか、知らない知識が多い。
とりあえず、わからない時にどこを見たら正解か、どんなやり方があるのかの検討をつけられるようにしたい。