プログラミングにおける極意とは

[excite-imp]
機能が、他の個所にまったく影響しないこと。影響を完全にコントロールできること?
これが完全に実行された状態ならば、どのような機能を組み込もうとも他の機能に影響しない。
例えば、ゲームなどでキャラクタを動かす機能と背景を動かす機能が、まったく影響しなければ、それぞれは自由に変更できる。
オブジェクト指向も、「他に影響しない機能」をオブジェクトというパックに包み込んで、そのうち他とのかかわりがある部分をメソッドとして取り出したものだからプログラミング言語はこの方向に進んでいく途中なのだと思う。
この機能単位が他に及ぼす影響が消えれば、機能ごとの実装が可能となる。
オブジェクト指向言語に足りない部分は、「どの」部分と影響するかを記述する方法が無いことか?
具体的には、クラスAのメソッドを呼び出せるクラスを、クラスA側で制限できるべきだ。
…現実的には厳しい制約か?そもそも、これでは「ライブラリ」が作れなくなってしまうじゃないか。
ということで、通信対象のクラスを持つクラス設計にすることで、通信対象を制御するのが現実的か。
うわ。デザインパターンとか、そのあたりに行き着いてしまった。先人は偉大だ。
ところでこの考え方だが、オブジェクトの切り分けに利用できないだろうか。オブジェクトとは密に連絡しあう要素をくくった単位である。という考え方だ。
今でも、c言語とかはモジュール単位でオブジェクトを隠したり出来るが、もっと隠せ。
関係ないところからオブジェクトに一切アクセスできないように、もっともっと隠せ。
仮想コンストラクタとか使って隠せ隠せ。