サブジェクト指向 という概念を知っていられるだろうか?
オブジェクト指向 では顧客とか商品とかのオブジェクトに分割してクラスとして実現してきた。
サブジェクト指向 では見積もり依頼受領・見積もり・受注・出荷・納品・請求・入金というトランザクション的な要素を考える。
もちろん オブジェクト指向 でも考えているわけだが明確に分離しているわけではなく、顧客クラスの一部は受注機能の達成にまた別の一部は納品機能の達成にと混在させているのが現状である。
また、商品クラスの一部は受注機能の達成という風に一つの機能が複数のクラスにまたがっているのも現状である。
つまり、オブジェクト指向 での散乱ともつれあいという欠点がそのままで放置されている。
設計段階で オブジェクト指向 という軸に対して、サブジェクト指向 という軸も加味する。
すると、プログラミングの未来はこう変わる。
顧客クラス 顧客.cs を作成し 顧客_受注.cs とか サブジェクト指向のコーディングを partial で書く。
受注フォルダを作成して、顧客_受注.cs とか 商品_受注.cs とかを放り込んでしまう。
共通で使う場合はどうかという話が必ずあると思うが 顧客.cs でも 顧客_受注納品.cs にでも入れておけばいいが、
共通で使うこと自体がもつれあいなので注意して設計で分類し精錬させてから、顧客.cs や 顧客_共通.cs になるべくまとめるといいだろう。
少なくとも共通で使う場合も、機能のまとまりに関する入口は、顧客_受注.cs とかに一つは作り、プログラムの見通しを良くするべきである。
このようにしてプログラムを作成すると、基本的で少量の共通処理とデータアクセス以外は、受注業務のデバッグは受注フォルダで完結するようになる。
サブジェクト指向 は単に設計のパラダイムというだけではなく、プログラミングにおいても革命をもたらすものである。