結局のところ、オブジェクト指向って何だろう?
自分の中でまとまっていることは、
オブジェクト指向はプログラムを整理整頓する技術
だと思う。
だから、分かりづらいプログラムや、汚いプログラムはオブジェクト指向ではないと思う。
例えば、、、
-------------------------------------------
ある部屋にたくさんのものを格納するとしよう。
従来の方法では、ただただ部屋に物を入れていく。
新しい方法では、部屋に物を入れる前に物を種類別に分けた箱に入れてから部屋に入れていく。
【従来の方法】
○メリット
・沢山のものを部屋に格納できる。
(ただし、それは綺麗に物を格納した場合という条件がつく)
○デメリット
・物を探しにくい。
・物を追加で格納していくと、どんどん物のありかがわからなくなる。
【新しい方法】
○メリット
・物を探しやすい。
・物を追加で格納する際に格納場所がある。
○デメリット
・箱も一緒に格納しなければならないので場所を取る。
-------------------------------------------
さて、これが何に例えているか分かるだろうか?
○箱を探しやすい=コードの可読性が良い
○物を沢山格納できる=メモリ使用量やプログラム速度
○物の追加=改修依頼
俺はこのように切り分けてみた。
まぁ、ただの例えだし、分かる人が分かってくれればいい。
オブジェクト指向は整理整頓をする技術だと思う。
だからこそ、箱(=オブジェクト)を使って説明をしてみた。
以下、自答自問。
質問は例えに対して、回答はオブジェクト指向に対してしてみる。
Q.箱に入れるものを間違えたらどうなるの?
A.クラスにはそのクラスの役割がある。これを理解していない人はオブジェクト指向は理解できていない。
Q.小さな部屋に入れるときは箱が邪魔になるのでは?
A.ごもっとも、全てのプロジェクトに有効なのがオブジェクト指向ではない。
Q.結局のところ整理整頓できれば従来のやり方の方がいいの?
メモリ管理、処理速度の観点で見るとその通りだと思います。
しかし、それを行うためにはメンバー全員が高いスキルを持っていることが前提条件になると思います。
さて、これで自分の中でのオブジェクト指向って言うものの整理がついた。
次はキャリアパスに関してでも書こうかなぁ~・・・。