最近の悩み。自分もそうだったけど以前はPerlやらBASICやらの手続き型言語しか知らなかった。Javaを業務でやるようになり、オブジェクト指向型を取り入れた。オブジェクト指向に慣れるまでに半年はかかった。どうしたら早く覚えられるのだろう?
手続き型とは
簡単に言うと、書いたプログラムを上から下に読んでいけば理解できるし、何してるのか?が全て見える書き方である。ある処理の塊をサブルーチンとして関数化するけどどこで何やってるかは一目瞭然。
オブジェクト指向型とは
処理をオブジェクトとしてまとめておき、必要なときにそのオブジェクトを生成し必要なパラメータを与えたり、メソッドを呼び出したりして使うもの。基本的にオブジェクトは処理の最小単位に分かれている。
手続き型しか知らない人が陥る事
手続き型しか知らない人がオブジェクト型のプログラムを解析しようとする時に実施して、よく分からなくなって挫折するのが「スタートからゴールまで 順番に処理を追う」という方法を試す事にある気がする。先にも書いたように、処理は最小単位に別れているので、処理を追っていくと別のメソッドを追って、 メソッドを追って・・・とするうちに何をしているのか分からなくなる。図に表してみようとする(フローチャートを描く)とグチャグチャになりやすい。そも そも、オブジェクトを生成するという概念が無いと、より分からなくなる。
似て非なる言葉
オブジェクトの生成というのは手続き型で言えば「サブ関数に移動する」と勘違いしやすい。というか、最初のうちは同じ事だと思っていた。
やらかしやすい事
Javaって手続き型でもオブジェクト指向型でもプログラムは書ける。どちらかを使うのではなく、どっちも書ける。だからオブジェクト指向型で構築されたプログラムを手続き型しか知らない人が追加でサブ関数的に処理を描く事も可能になる。 違いが分かってくると何でもないけど、最初は分からずに書いていたので保守性の悪いプログラムにしてしまっていた。
新しく手続き型しか知らない人がプロジェクトに来たらどう教えるか?
で、タイトルにつながるのだがプロジェクトに手続き型しか使った事がない人がやって来る模様。本人もオブジェクト指向で作った事はないと言っている のでどうしたもんか?と。自分が理解出来たのはある日突然の閃きのように「!!分かったっ!!」ってなったから。ずっと同じ事をやっているとある日突然理 解する・・・ってやつです。 でも、プロジェクトは閃いてくれるのを待ってはくれない。そして、期間限定のミッションなので新しい人はこのプロジェクトが終わったら去っていく人。立つ鳥跡を濁さずじゃないけど、プロジェクトを引っかき回すような事はして欲しくないし・・・難しいものです。