[解決済み】(Java)パッケージの構成に関するベストプラクティスはありますか?[クローズド]。
2022-04-21 09:19:53
質問
少し前のことですが、Javaのパッケージの細かな構成についての質問がここで回答されていました。 例えば、以下のようなものです。
my.project.util
,
my.project.factory
,
my.project.service
など。
今は見つからないので、質問させていただくかもしれません。
Javaにおけるパッケージの構成とその中に入るものに関して、ベストプラクティスはあるのでしょうか?
Javaプロジェクトでは、クラスをどのように整理していますか?
たとえば、私が数人でやっているプロジェクトには、beanというパッケージがあります。最初は単純なビーンズを含むプロジェクトだったのですが、(経験不足と時間不足で)すべてを(ほとんど)含んでしまうことになりました。 いくつかのファクトリークラスをファクトリーパッケージ(ビーンを作成する静的メソッドを持つクラス)に入れることで、それらを少し整理しましたが、ビジネスロジックを行う他のクラスや、プロパティファイルからコードに対するメッセージを取得するような(ビジネスロジックではない)簡単な処理を行うクラスもあります。
皆様のご意見、ご感想をお待ちしております。
解決方法は?
パッケージの構成やパッケージの構造化については、通常、激しい議論が交わされます。以下はパッケージの命名と構造化に関する簡単なガイドラインです。
- javaに従う パッケージの命名規則
-
ビジネス上の役割だけでなく、機能的な役割に応じてパッケージを構成する
-
機能またはモジュールに従ってパッケージを分解する。
com.company.product.modulea
-
さらに、ソフトウェアのレイヤーに基づいた分割も可能です。しかし、もしパッケージの中にいくつかのクラスしかないのであれば、パッケージの中にすべてを入れることは理にかなっています。
com.company.product.module.web
またはcom.company.product.module.util
などです。 - IMOは、緊急の必要性がない限り、例外やファクトリーなどを個別にパッケージングすることは避け、構造化で行き過ぎないようにします。
-
機能またはモジュールに従ってパッケージを分解する。
-
プロジェクトが小さい場合は、パッケージの数を少なくしてシンプルにしましょう。
com.company.product.model
とcom.company.product.util
など。 - で人気のあるオープンソースプロジェクトのいくつかを見てみましょう。 Apacheプロジェクト . 様々な規模のプロジェクトで、どのように構造化を使用しているかを見てみましょう。
- また、名前を付ける際にビルドと配布を考慮します(APIやSDKを別のパッケージで配布することができます、サーブレットAPIを参照してください)。
何度か実験と試行を繰り返せば、自分が納得できる構造を思いつくことができるはずです。一つの慣習に固執せず、変化を受け入れることが大切です。
関連
-
[解決済み] 要素 'beans' の宣言が見つかりません。
-
[解決済み] Java の条件付きコンパイル:コードチャンクをコンパイルしないようにするには?
-
[解決済み] 型の不一致:ArrayListからListへの変換ができない
-
[解決済み] ファイルを作成せずに、ファイルが存在するかどうかをチェックする
-
[解決済み] publicId と systemId の間に空白が必要です。
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
-
[解決済み] Javaパッケージ名の単語区切り記号はどのようなものですか?
-
[解決済み] Javaで個人/趣味のプロジェクトに使用するパッケージの命名規則を教えてください。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Eclipse デフォルトのフォント名
-
[解決済み] このフォーマット(Tue Jul 13 00:00:00 CEST 2010)の日付をJavaの日付に変換する方法(文字列はalfrescoのプロパティに由来しています)
-
[解決済み] パラメータ[変数]の不正な修飾子;finalのみが許可される[closed]。
-
[解決済み] Java Genericメソッドをstaticにするには?
-
[解決済み] Androidのコールバックとは何ですか?重複
-
[解決済み] Javaでのスキャナが動作しない
-
[解決済み] java.util.MissingFormatArgumentException: 形式指定子 '%s' がありません。
-
[解決済み] Java- <T extends Comparable<T>>の意味?
-
[解決済み] SubclipseとJavaHLのインストールで頭を悩ます
-
[解決済み] java.io.IOException。DER長の短い読み取り