1. ホーム
  2. java

[解決済み] インターフェースは別パッケージにすべき?[クローズド]

2023-04-22 14:36:23

質問

私はあるチームの新メンバーで、たくさんのコンポーネントと依存関係を持つ、かなり大きなプロジェクトに取り組んでいます。すべてのコンポーネントに対して interfaces パッケージがあり、そこにそのコンポーネントの公開されたインターフェイスが配置されています。これは良い習慣でしょうか?

私のいつものやり方は、インターフェースと実装を同じパッケージに入れるというものです。

どのように解決するのですか?

インターフェースと実装の両方を配置することはよくあることで、特に問題はないようです。

ほとんどのクラスはインターフェイスとその実装の両方が同じパッケージに含まれています。

たとえば java.util というパッケージがあります。

などのインターフェイスが含まれています。 Set , Map , List のような実装を持ちながら HashSet , HashMapArrayList .

さらに、Javadocsはそのような状況でもうまく動作するように、ドキュメントを分離して インターフェイス クラス ビューでパッケージの内容を表示します。

インターフェースのためだけにパッケージを持つことは、膨大な数のインターフェースがない限り、実際には少し過剰かもしれません。しかし、ただそうするためにインターフェイスをそれ自身のパッケージに分離することは、悪い習慣のように聞こえます。

もし、インターフェースと実装の名前を区別することが必要であれば、インターフェースを識別しやすくするための命名規則があってもよいでしょう。

  • インターフェース名の前に I . このアプローチは、.NETフレームワークのインターフェイスで採用されています。ということを伝えるのはかなり簡単でしょう。 IList がリスト用のインターフェースであることを伝えるのはかなり簡単でしょう。

  • を使用します。 able というサフィックスを使用します。 この方法は、JavaのAPIでよく見られるもので、例えば Comparable , Iterable そして Serializable などがあります。