[解決済み] インターフェースは別パッケージにすべき?[クローズド]
質問
私はあるチームの新メンバーで、たくさんのコンポーネントと依存関係を持つ、かなり大きなプロジェクトに取り組んでいます。すべてのコンポーネントに対して
interfaces
パッケージがあり、そこにそのコンポーネントの公開されたインターフェイスが配置されています。これは良い習慣でしょうか?
私のいつものやり方は、インターフェースと実装を同じパッケージに入れるというものです。
どのように解決するのですか?
インターフェースと実装の両方を配置することはよくあることで、特に問題はないようです。
ほとんどのクラスはインターフェイスとその実装の両方が同じパッケージに含まれています。
たとえば
java.util
というパッケージがあります。
などのインターフェイスが含まれています。
Set
,
Map
,
List
のような実装を持ちながら
HashSet
,
HashMap
と
ArrayList
.
さらに、Javadocsはそのような状況でもうまく動作するように、ドキュメントを分離して インターフェイス と クラス ビューでパッケージの内容を表示します。
インターフェースのためだけにパッケージを持つことは、膨大な数のインターフェースがない限り、実際には少し過剰かもしれません。しかし、ただそうするためにインターフェイスをそれ自身のパッケージに分離することは、悪い習慣のように聞こえます。
もし、インターフェースと実装の名前を区別することが必要であれば、インターフェースを識別しやすくするための命名規則があってもよいでしょう。
-
インターフェース名の前に
I
. このアプローチは、.NETフレームワークのインターフェイスで採用されています。ということを伝えるのはかなり簡単でしょう。IList
がリスト用のインターフェースであることを伝えるのはかなり簡単でしょう。 -
を使用します。
able
というサフィックスを使用します。 この方法は、JavaのAPIでよく見られるもので、例えばComparable
,Iterable
そしてSerializable
などがあります。
関連
-
JAVA_HOME環境変数が正しく定義されていない問題を解決する
-
アノテーション「@Retention」の役割
-
JNIエンカウンターエラー:構造体またはユニオンではない何かでメンバー 'FindClass' のリクエスト
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] C#のインターフェイス。暗黙の実装と明示の実装
-
[解決済み] リフレクションを使って、パッケージ内のすべてのクラスを見つけることができますか?
-
[解決済み] JavaにおけるRunnableインターフェースとCallableインターフェースの違いについて
-
[解決済み] Java Swingでset(Preferred|Maximum|Minimum)Sizeメソッドの使用は避けた方が良いのでしょうか?
-
[解決済み】TypeScriptのインターフェースと型について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
アクセス制限です。タイプ 'JPEGCodec' は API ではない ☞My Blog Github ☜ ホームページを見る
-
Springの設定でxsdファイルのバージョン番号を設定しない方が良い理由
-
SLF4J: クラス・パスに複数のSLF4Jバインディングが含まれています。
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
ajax コミット リソースの読み込みに失敗しました: サーバーはステータス 400 で応答しました ()
-
シェルコマンドやスクリプトのJavaコール
-
BindException: アドレスはすでに使用中です:バインドエラー解決
-
keytool error: java.io.FileNotFoundException: cacerts (アクセス拒否されました。)
-
Javaがリソースリークに遭遇した:'input'が閉じない 解決方法
-
Java:未解決コンパイル問題の解決方法