OCPから理解するデザインパターン
↓の記事を今更ながら読みました(1999年の記事なんですね・・・)
- Open-Closed Principle とデザインパターン
あまりにも良かったのでちょっとだけご紹介。
OCP(Open-Closed Principle)とは?
ソースコードを修正せずに、機能追加可能な設計にするべしという原則(ソースコードを追加するだけで機能も追加される!)
この原則を守れば、
- バグの可能性の低減
- モジュールの再利用
を促進できるとのこと。
※OCPに違反した例あるある :機能を追加する度にif文にelse ifで条件を足すやつ
OCPを守りながら、仕様変更に備える
OCPを破らずに、仕様変更の可能性がある箇所に柔軟性を持たせるためにデザインパターンを使うと書いてました。
この観点は目からウロコでした。
例えば、(OCPを守りつつ)
とか。
気をつけないといけないと思ったこと
とはいえ、デザインパターンを適用して、柔軟性を持たせる場所を間違えないように気をつけないとダメですね。
デザインパターンを適用することで、少なからずソフトウェアの構造は複雑になると思うので。
以前、APIデザインの極意という本で、JavaMail APIはプロトコルの追加に柔軟性を持たせたがために、使いづらいAPIとなって、結果、Java製のメールアプリケーションができなかった(!)ということが書いてましたが、
それと同じようにはならないようにしないとなぁと。
この辺が開発者の腕の見せどころだし、精進していきたいです。
まとめ
今後は、
「仕様変更がXXに発生する可能性がある。
OCPを守りつつ、柔軟性を持たせるためにYYデザインパターンを使う!」
という観点を持って開発していきたいと思いました!