コードコンプリートを読んで、感銘を受けた箇所抜粋。
継承を「is a」関係のモデリングにのみ使用しているか。つまり、派生クラスがリスコフの置換原則に準拠しているか。
”リスコフの置換原則とは、一言でいうと「派生型(サブクラス)はその基底型(スーパークラス)と置換可能でなければならない」という原則です。
https://qiita.com/hiko1129/items/9b3066feffabccf83c16#%E3%83%AA%E3%82%B9%E3%82%B3%E3%83%95%E3%81%AE%E7%BD%AE%E6%8F%9B%E5%8E%9F%E5%89%87%E3%81%A8%E3%81%AF
* リスコフの置換原則を守らないと必然的に開放/閉鎖原則に違反するため、リスコフの置換原則を守ることは重要です。””
ゴッドクラスを作成しない。クラス名を動詞にしない。
ADTを使用する利点。
- 実装の詳細を隠蔽できる。
- 変更がプログラム全体に影響しない。
継承ツリーでオーバーライドされたコンストラクタとデストラクタの振る舞い。(Swift だと init と deinit)
包含(has a)は、オブジェクト指向の動力とも言えるテクニック。
可能であればすべてのコンストラクタで、すべてのメンバデータを初期化する。