【概要】
1.結論
2.オープン・クローズドの原則とは何か
3.オープン・クローズドの原則どう使うのか
4.なぜオープン・クローズドの原則が必要か
5.ここから学んだこと
1.結論
オープン・クローズドの原則にも従う!
2.オープン・クローズドの原則とは何か
●オープン・クローズドの原則とは、
拡張に対して開いていて、
修正に対して閉じていなければならない
つまり、拡張する分にはOKだけど、
拡張した時の修正範囲は最小限に止めようね。
そうしないと破壊的変更(とてつもない修正)を
しないといけなくなるということです!
3.オープン・クローズドの原則はどう使うのか
言葉だけではイメージがしにくいと思うので
例を挙げてみます!
class A
class Interface B
class *** implements C(interface名)B
class Interface B
puts ******
class A
class B
puts ******
ただあまりにも抽象化しすぎると、
本当に必要でないクラスができてしまいます。
(上記ではわかりやすくするために簡素化しているので
”オープン・クローズドの原則ではない”方がわかりやすいですし、
class A
puts ****でいいまであります。)
上記は簡単に書いているのでまだ追えていますが、
階層が深くなるとどこにいるのか
わからない(可読性がなくなる)
部分がでてきます。
なので、変更箇所が今後ありそうな箇所を
予測した際に有効で、難しい原則です。
これは”プログラムを書くときの注意点:その4(次々回投稿)”
のインターフェース分離の原則でも関わってきます。
4.なぜオープン・クローズドの原則が必要か
結論としては、プログラミングを書く際の要は以下の
3つに集約されると思っています。
Ⅰ)保守性:修正(エラー発見のしやすさ)・管理のしやすさ
Ⅱ)拡張性:追加機能実装のしやすさ
Ⅲ)可読性:記述のわかりやすさ
が必要だと考えております。
上記3つのことは自分が他の4つの原則を説明する際に同じことを言うので、
5つの原則のうちどれかを読んでいただくと
結論はすべてこの3つに収まります。
つまり、上の3つを叶えるには
オープン/クローズドの原則に”も(他の4つの原則もあるので)”従う!!
5.ここから学んだこと
i)implements,interfaceメソッドを知ることができました!
ii)implements,interfaceメソッドを駆使することで
可読性かつ保守性のあるプログラムをかけますが、あまり不本意に適用
したらいいわけでないと思いました。プロジェクトでお客さまに提案する際や、
今後拡張しそうな箇所を予測した上で使う原則であり、非常に奥深い原則だなと感じました。