オブジェクト指向とデザインパターン

公開日:2016/11/12
更新日:2020/01/20

どうも。ゴン氏です。
イベント機能も公開待ちの状態になり、
ちょっと心に余裕が出てきたので、
最近、再び勉強し直しているオブジェクト指向やデザインパターンについて語って行こうと思います。
あくまで、僕の考えなので、一般的な内容と異なっている可能性間違っている可能性があります。
「主な」「思います」「考えています」という文言は文章が冗長になるので、省きます。

【オブジェクト指向について】

プログラムを「物」という観点で整理整頓する方法です。
現実世界でも、整理整頓されない部屋やデスクだと、働きにくいですよね。
いい感じに整理整頓して、働きやすくするのが、僕のイメージです。

【目的】

「変更しやすい」プログラムを作ることです。
プログラミングは変更の連続です。

【手段】

どうやって、「変更しやすい」プログラムを作るのかというと
以下のようなポイントを踏まえてコーディングします。
「わかりやすい」
・・・オブジェクトという現実世界に近い概念を使って直感的に。(情報と振る舞いを物に)
「部分的に理解するだけで良い」
・・・理解が必要な情報はできるだけ少なく。危険な変更はされにくく(カプセル化)
「重複が少ない」
・・・変更は、1箇所だけ修正するのが理想。(移譲・継承)
「機能を追加・変更・削除し易い」
・・・変更は、使う物を変えるだけにする。(ポリモーフィスム)

【デメリット】

オブジェクト指向にもやはり、デメリットがあります。
「難しい」
・・・そもそも割と難しいです。下手にやろうとすると、逆に変更しにくく、分かりにくくなったりします。
「時間がかかる」
・・・考えるのにも・コードを書くのにもある程度時間がかかります。(特に考えるのに時間がかかります。)
コードを理解するにも、デバックするのにも、場合によっては時間が掛かってしまうことがあります。

【いつ使うべきなのか】

程度によります。
軽く使う分には、だいたい使って良いです。プロトタイプ作成には、いらないかもしれませんが、
時間もそこまで変わらないですし、習慣をつけるためにも普段から軽く使ってるといいでしょう。
重く使うのは、必要になったときです。
使わなければ、コピー&ペーストの嵐になり、同じようなコードがそこらじゅうに散らばるような状況で
使うとより効果を発揮します。
ただし、よく考えることが大切です。

【デザインパターンについて】

正直まだまだ勉強中なので、自信はないですが、
基本的には
ある問題に対して、(When)
いい感じにするために、(Why)
どういう事柄を「物」として認識すると、いいか。(What)
そして、「物」として、どのように扱えば、いいか。(How)
というTips集だと思っています。
色々なデザインパターンについて、
別のページで私見を書いて行こうと思います!