2016-04-28 8 views
1

同じJavaパッケージに含まれるクラス間に循環依存関係を持たせることは悪い習慣ですか?Java:同じパッケージ内で循環依存関係を持つことは悪い習慣ですか?

もしそうでなければ、そういうガイドラインへの評判がいいと思います。

+0

アクセシブル_how_? 「それはコンパイルされますか」のように?それを試してみてください。 –

+0

私は良い/悪い練習を意味しました。私はこれを避けるために少しのリファクタリングを行いました。チームメンバーは、同じパッケージ内にある限り、循環依存関係を持つことをお勧めします。 –

+3

関連:http://stackoverflow.com/questions/9173494/are-circular-dependencies-considered-bad-design?rq=1 http://stackoverflow.com/questions/1356304/are-circular-class-dependencies-コーディングスタイルの悪い見方?lq = 1 – Thilo

答えて

2

それ自体では、循環依存関係は問題にはなりません。しかし、彼らが指摘しているのは、一般的には密結合です。基本的には、2つのクラスを強く結合することによって、一方のクラスの変更が他方のクラスの変更につながる可能性があると受け入れます。それは、2つのクラスが異なる責任を持っている場合、問題になる可能性があります。つまり、責任を分担していることを強く結び付けることによって、Single Responsibility Principleに違反します。

あなたは、同じパッケージに二つのクラス間の循環依存関係を持っていれば、その後に答えるためにいくつかの即時の質問があります。

  • を単一のクラスにマージない理由は?

  • もう一方の内部クラスを作成してみませんか?

  • なぜインターフェイスを賢明に使用してデカップルしないのですか?

  • もっと分かりやすい別のクラスデザインがありますか?

緊密に結合されたクラスは、それらの緊急性が高くなるほど、また他の質問も大きくなります。部分的にクラスがパッケージの面でどれほど近くにあるかについては、同じアーティファクト内の同じパッケージ内では、同じアーティファクト内の異なるパッケージ間よりも心配はありません。しかし、クラスが異なるアーリーファクト(つまりjar)にあり、同じパッケージ内にある場合は、密接に結合してはいけません。クライアントがライブラリ依存バージョンを個別にアップグレードできなくなる可能性があるからです。

件名の「評判の良い」リファレンスでは、ボブ・マーティンの著書「アジャイルソフトウェア開発」よりも悪い可能性があります。

関連する問題