OOAはエンティティレベルの仕様変更に弱くないか?
ポリモルフィズムを使うとプログラムは綺麗に書けるけれど、保守しにくいのではないだろうか?
仕様変更によるソースの修正範囲の大小は、仕様変更の中身がエンティティに及ぶのか、それともビジネスルールの修正だけなのか、によって決定されると思う。
ビジネスルールの修正なら、修正範囲はそれほど大きくない。普通は、一つのクラス内で機能分割すればいい。
しかし、エンティティそのものが修正されるなら、修正範囲は非常に広く、しかも修正範囲を調査するのに手間取る。
普通は、修正対象のエンティティのgetXXX()/setXXX()がCallされているクラスを全て洗い出し、一つずつロジックを追いかけなければならない。そのロジック内部でポリモルフィズムが使われていたら、どのサブクラスで動いているのか、修正対象データはどのクラスへ委譲されているのか、更にソース解読に手間取る。
ポリモルフィズムを使う利点は、新しいビジネスルールを追加しやすい所にあるが、エンティティそのものが変更されてしまうと、全てのサブクラスに影響が及んでしまい、ポリモルフィズムの利点が消えてしまう。
他にも、HashMapやArrayListのようなCollectionクラスにエンティティのデータを詰め込んでいる時は要注意。状況によって、データがどの値で設定されているのか、理解しにくいから。
Genericityが使えれば、詰め込むデータの型チェックが効くので、ソースは読みやすくなるが、それでも複雑さが解消されるわけではない。
結局、プログラム群が一つのコンポーネントとして独立していない設計に問題があるのだが、そもそもビジネスルールはRDBに依存している事が多いため、エンティティに依存してしまう設計は避けられない。
エンティティレベルの仕様変更は頻度は多くないが、サブシステムを新しく追加する時や従来のコード体系が変更される時に要件として出てくる。
ビジネスルール層のOOAとRDB層のDOAは、設計思想として両立できるのだろうか?
| 固定リンク
「日記・コラム・つぶやき」カテゴリの記事
- TwitterやFacebookは人力キュレーションツールとして使う(2022.10.02)
- 「現代病「集中できない」を知力に変える 読む力 最新スキル大全」の感想(2022.08.28)
- 人類は海辺から生まれた~水生類人猿説が面白い(2022.08.09)
- 戦前の日本人の気質はまだ成熟していない青年期と同じだった(2022.06.14)
- 物理学を攻略するためのマップ(2022.04.18)
「プログラミング」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのモジュールシステムは複雑性をより増している(2022.09.10)
- Javaはなぜ関数型言語になろうとしているのか(2022.09.02)
- Javaのラムダ式の考え方(2022.08.10)
- Javaはオブジェクト指向言語ではなく関数型言語だった~「[増補改訂]関数プログラミング実践入門」はお勧めの本だ(2022.08.06)
コメント