読者です 読者をやめる 読者になる 読者になる

クラス作る=無駄な作業(旧 blog からの移行)

設計

クラス作るってのはいやはやなんとも無駄な作業です。

 どれだけ無駄な要素を含んでいるか。


1.カプセル化する作業
 カプセル化を維持するためには、少しだけ頭を使います。何でもかんでも外部に公開してしてしまうといろいろと問題が出るためです。オブジェクトの生成から破壊までを想定して、正しい道筋をコードにしておかなくてはなりません。
 あるクラスのカプセル化を完了させるために注力することは、プロジェクトを推し進めるベクトルとは方向を異にするバイアスです。ここに無駄があります。

2.完成したクラスを利用する作業
 完成されたクラスを利用するときには、少しだけ頭を使います。あるクラス A があったとして、A の責務は何か、どんなことをするクラスなのかをある程度理解しないといけません。なぜなら、プロジェクトを完遂するためには A の他にあと何が必要かを把握できないと開発作業が進まないからです。そのためには別のクラス B についても、A と同じくらいの理解が必要です。
 プロジェクトの実現のために、どんな材料が、なぜ、どれくらいのスケールで必要なのか筋道立てて理解しないと開発が始まりません。ここにも無駄があります。

3.クラスを修正する作業
 仕様変更や設計変更、その他外部からの圧力に、プロジェクトは柔軟に対応していかなくてはいけません。そこで発生するのがクラスの責務の変更です。例えば、クラス A でまかなうべき仕事が増えることになったとします。すると当然、完成していたはずの A を修正しないといけません。このとき、新しい仕事をまかなうため、またさらにカプセル化を維持するために少しだけ頭を使います。なぜなら、クラスというものはそもそも、プロジェクトがたどった道のりとは無関係であるべきものだからです。
 クラスが変化に耐えて存続することと、プロジェクトにかかる外圧に対処してゆくことは別の話であるにも関わらず、です。ここにも無駄があります。


 だからオブジェクト指向の中でもクラスをガリガリ定義してゆくいわゆるクラス指向のプログラミングで得られる生産性は、高々この程度なのだろうと思います。Scala がその頂点にタッチした、ということで、もういいんじゃないでしょうか。
 
 次はソフト開発はどこへ向かうべきなんだろう・・・・?