Re: 良いコンポーネント設計とは?

id:aufheben:20060104 へ トラックバック をいただいたのでお返事。

コンポーネントというのもいろいろあって、大雑把には、

  1. フレームワークに相当する部分
  2. フレームワークとはならないが比較的再利用可能なもの
  3. 特定の目的が有るような改修しかしないようなもの

とあると思います。

1が何を指しているのかよくわからなかったのですが、フレームワークで予め用意されているコンポーネントのことでしょうか?
最初のエントリで想定していたのは2に相当するものです。具体的にはビジネスロジックとか。

そう考えると、少なくとも3にあたるコンポーネントでは、変更容易性や、テスト容易性といった保守性に悪影響を与えなければ、依存関係はさほど問題にならないのではないかと思います。

特に異論はありません。プレゼンテーション層などはあまり再利用性を意識する必要はないと思います。最近何でも POJO にするのが流行りのようですが、個人的にはあまりプレゼンテーション層のオブジェクトを POJO にするメリットを感じません。

特に、アノテーションは仕様の記述であって、それを解釈するフレームワーク以外には依存していないと言えます。一方で、継承や実現をしてしまうと、対象となるクラスやインタフェースに依存することになるので、より望ましくない、密な依存関係といえるのではないでしょうか?

良い/悪いは別にして、フレームワークにも依存しないのが本来の POJO かなぁと思います。アノテーションの方が実現より密な依存関係じゃないという理由は理解できませんでした。