毎度のことながらえムナウさんと酒席で話をしていた中で、飲み放題の制限時間によって中断されてしまった内容についてを酔っていない今まとめておこうと思いました。
あくまでも僕の考えです。
xx指向って結局は
どうやって分類するの?
って話だと思っていて、どうやって分類すべきなのか?については、恐らくは「生産性・可変性・安定性」の全ての水準を高めることに主眼をおくべきだと考えています。
例えば、構造化プログラミングは手続きを階層によって分類しています。
オブジェクト指向ではデータと手続きの単位をオブジェクトとして分類していると同時に、オブジェクト内外で手続きの階層化を行っています。これは、ある意味オブジェクト単位の分類と処理単位による分類という2つの分類方法を実現していると考えて良いと思います。
一方で、データソースという単位で分類されていないため、例えばデータテーブルにたった一つのフィールドを追加しただけで、これに関連するオブジェクトを全て拾い出して正確に変更していくための煩雑さが生じます。
アスペクト指向やサブジェクト指向について僕は詳しくはありませんが、現存する分類方法を増強したり新しい視点から分類しようとした試みであろうという想像は、恐らく大きく的を外していないでしょう。
多面的な分類方法の理想的な形としては、データベースマネジメントシステムによって特定の条件に一致するレコードを選別し、そこに含まれる必要なフィールドのデータのみを眼前に並べて修正を加えるというデータオペレーターの作業に酷似してくると考えます。
コードブロックの粒度を密にしてセルデータとして位置づけ、名前空間やクラスというプライマリーなインデックスで設計や開発を行うと同時に複数のインデックスと関連付けることによって多面的な分類は可能になるでしょう。
C# ではパーシャルクラスでの記述が可能になったことによって、名前空間だけでなくクラスを複数のファイルに分類できるようになりました。また、拡張メソッドによって必要な手続きだけを名前空間単位で既存のクラスに付け加えることができるようになっています。
これらも複数存在するインデックスのひとつではないかと思っています。
そんな感じ?