再利用性

昨日の昼食時の会話でプログラムの再利用性についての話題が出たので、その事について一言書いてみようかと思います(プログラム話です)。

『オブジェクト指向言語』が出た時に、ウリになっていたのが

「カプセル化したクラスをちゃんと作れば、再利用できてプログラムの安定性が高くなり、コーディング量も減るよ!!!」

という事だったのですが、万事全てが上手くいってはいないのが現状です。その理由的には、

1. 言語がカプセル化を強制していない
 カプセル化できるようにはなっているけど、『強制』はしていないので、使い手次第で、どうにでもなってしまいます。
2. クラスを『ちゃんと』作れない
『ちゃんと』の定義にもよるのですが、夢のような再利用性を実現する為には
  • クラス設計がちゃんとなされている
  • クラスのカプセル化がちゃんとなされている
  • クラスのパフォーマンスが今後変更が必要ないほど、チューニングされている
事が必要だと思うのですが、作成時に将来分まで想定して全てが満たせる事ってないと思う。
3. 再利用が必要なクラスなのか確定できない
 基幹部分のクラスを作成している時は再利用性について考慮して作るので、問題ないのですが、実際には↓のような事が多い
 
 あるプロジェクト専用にクラスAを作成していて、そのプロジェクト用に色々コードを書いていて、 ある日他のプロジェクトでも使えそうだから使おうとなって使うと、 元プロジェクト限定のコーディングがちょこちょこあったりして、 色々修正してクラスA_1が作成され、さらに別のプロジェクトで・・・のループでクラスA_XXができあがる

辺りのような気がする。 この問題を将来すばらしい言語が出てきて解決してくれるとは思えないので、 「オブジェクト指向言語」を上手く使える「オブジェクト指向」を各プログラマーが精進して精度を高 めていくという地味な努力が必要になってくるのかなっと。

「そうじゃないよ!」というツッコミもあるかと思いますが、風呂原稿締切日に遅刻して会社に来てし まい、急いで書いたので御勘弁を。

K.K