ちゃんなるぶろぐ

エンジニア5年生🧑‍💻 オライリーとにらめっこする毎日。

【3分でわかる!】プログラミング〜OCPについて〜

読み終えるまで約3分

 

どうも、ちゃんなるです。

今回はこの本の内容を元に投稿します!

『プリンシプル・オブ・プログラミング』

 

この本から得られるもの

いいコードを書くための『プリンシプル』

(プリンシプルとは原理・原則のことで、これを知ることがプログラマとして成長するための『王道』『近道』である)

 

本書の目的は、『プリンシプル』を通して良いコードを書けるようになることです。

 

『プリンシプル』は抽象的な内容であり、本書にはプログラムコードによる具体例もありません。

そのため、自分なりに内容を咀嚼し、自分なりの具体例を考えようとする姿勢が大切です。

①OCPとは

OCP:Open-Closed Principle

日本語では『解放・閉鎖原則』です。

 

どういうことか?

下記の2つの特性を同時に満たすように、設計するべきということです。

  1. コードは、拡張に対して開いている:コードの振る舞いを拡張できること
  2. コードは、修正に対して閉じている:振る舞いを拡張しても、その他のコードは全く影響を受けないこと

 

なぜこのようにすると良いのか?

それは、「コードの変更に柔軟に対応するため」です。

 

ソフトウェアは、生きている限り変化を求められ続けます。

その際に変化させるのが困難な設計になっていると問題です。

そこで重要になるのがまず『Open:解放』で、これはソフトウェアに機能の追加ができることです。

そしてその後『Closed:閉鎖』で、拡張した場合に、他の既存の機能に悪影響が出ないことです。

②OCPをどう実践するか

インターフェースを使って設計しましょう!

 

例えば、ある機能を持ったモジュールを設計する場合、モジュール利用者(クライアント)がモジュール提供者(サーバー)を呼び出すとします。

この時、直接呼び出すのではなく、インターフェースを経由させるのです。

直接呼び出す場合は、クライアントが別のサーバーに接続したくなった際にクライアントに変更を加える必要が出ます。

対してインターフェースを経由しておけば、新機能のサーバーが追加されてもクライアントはサーバーの入れ替わりによってコードを変更する必要がありません。

③OCPの乱用は良くない

OCPに乗っ取り、至る所でインターフェースを用意するのは悪手です。

サーバー側の変更が発生しなかったら、そのコードが不要になり複雑になるだけです。

変更を見越したコーディングは良くありません。

YAGNI原則です!)

chan-naru.hatenablog.com

 

1度目の変更が必要になった際に初めて、インターフェースを追加するようにしましょう。

まとめ

  • Open:コードは容易に拡張できるべき
  • Closed:拡張した際、触れてない部分には影響が出ないようにするべき
  • インターフェースを導入するべき
  • インターフェースの導入は、それが初めて必要になった時が良い

 

*より深く知りたい方は、ぜひ本書を手にとってみてください!

書籍情報 

プリンシプルオブプログラミング 3年目までに身につけたい一生役立つ101の原理原則 [ 上田勲 ]

価格:2,420円
(2021/8/28 14:24時点)
感想(2件)

プリンシプル オブ プログラミング 3年目までに身につけたい 一生役立つ101の原理原則【電子書籍】[ 上田勲 ]

価格:2,178円
(2021/8/28 14:24時点)
感想(1件)

【書籍名】プリンシプル オブ プログラミング 3年目までに身につけたい 一生役立つ101の原理原則

【著者名】上田勲

【出版社】秀和システム

【出版日】2016年3月

【ページ数】303p

著者紹介

f:id:Chan-Naru:20210828142858p:plain

著者:上田勲

横浜国立大学経営学部卒。キヤノンITソリューションズ勤務。Webアプリケーション自動生成ツール「Web Performer」の開発に、立ち上げ期より関わる。現在、テクニカルリーダー、スペックリーダー、アーキテクト、デザイナーを担いつつ、自らもプログラミングに携わる

上田勲|プロフィール|HMV&BOOKS onlineより)

 画像は上田勲に関する記事一覧 - ログミーより