プログラムを書くときの注意点:その3
1.結論
2.リスコフの置換原則とは何か
3.なぜリスコフの置換原則が必要か
4.リスコフの置換原則はどう使うのか
5.ここから学んだこと
1.結論
リスコフの置換原則にも従う!
2.リスコフの置換原則とは何か
●リスコフの置換原則とは、
簡単にいいますと、親クラスは子クラスと
同じ動きにしないといけない
逆を言うと、子クラスが親クラスのメソッドの
挙動を変えてはいけないということです。
3.なぜリスコフの置換原則が必要か
結論としては、プログラミングを書く際の要は以下の
3つに集約されると思っています。
Ⅰ)保守性:修正(エラー発見のしやすさ)・管理のしやすさ
Ⅱ)拡張性:追加機能実装のしやすさ
Ⅲ)可読性:記述のわかりやすさ
が必要だと考えております。
上記3つのことは自分が他の4つの原則を説明する際に
同じことを言うので、5つの原則のうちどれかを読んでいただくと
結論はすべてこの3つに収まります。
つまり、上の3つを叶えるには
リスコフの置換原則に”も(他の4つの原則もあるので)”従う!!
4.リスコフの置換原則はどう使うのか
こちらも例を用いて説明いたします!
class A
def initialize(aaa)
end
def a
end
end
class B < A
def initialize(aaa)
@bbb = aaa
end
def b
end
end
================
class C < A
def initialize(aaa)
@bbb = aaa
@ccc = aaa
end
def a
end
def c
end
class A
def initialize(aaa)
end
def a
end
end
class B < A
def initialize(aaa)
@bbb = aaa
end
def b
end
end
class B < A
def initialize(aaa)
@ccc = aaa
end
================
class B < A
def initialize(aaa)
@bbb = aaa
@ccc = aaa
end
def a
if ccc
else
ccc_a
end
def c
end
end
”リスコフの置換原則ではない”の方に、
================の下に
classBにしていますが、
”リスコフの置換原則”の方に、
================の下に
classCに変換しています。
classBに一緒にするより、
classCに分けて原則に則っています。
5.ここから学んだこと
i)リスコフの原則自体、まったく知らなかったので
調べること自体にすごく価値がありました!
ii)親クラスと子クラスを連動はさせるものの、
子クラスから親クラスに影響を受けないようにすることがポイントでした!