大学時代からJavaに触れていなかったので、Javaで開発を始めました。これまでのところ、私は多くのことを思い出し、たくさんのことを読むことができましたが、これはまだ私にはわかりません...
私が抱えている問題は、多くの本/例/チュートリアル/ SEの投稿が、この種の質問が発生しない、より単純で小さな問題に焦点を合わせていることです。
1000種類のタイプ(クラス、インターフェイス、またはその両方)のプロジェクトがある場合...タイプごとに新しいファイルを作成するのに最適なプロジェクト構造/レイアウト規則はありますか?C ++ / C#のバックグラウンドから来ているので、プロジェクトの残りの部分で使用されるインターフェイスを定義するファイルが1つ、または少数あることに慣れているので、(まだ?)うまくいきません。また、小さな関連クラスは1つのファイルに実装されることがよくあります。
より具体的な例として、私は現在、15の異なるイベントタイプをすべて1つのクラスで処理している「Event」クラスをリファクタリングしています。クラスが定義されているパッケージには、リーダー、ライター、パーサーなどの他のイベント処理クラスも含まれています。
基本イベントクラスと15の派生クラスを作成する場合、それぞれがわずかに異なる属性/動作を持っているため、これらは私のオプションです。
- 15個の新しいファイルがすべて既存のパッケージに追加されました。ファイルの数が6から21になり、直交性が失われるため、そのパッケージを「汚染」しているようです。
- すべてのイベントクラスを独自のパッケージに移動し、それらをまとめます
- 「Events.java」という名前のファイルを1つ作成し、15のクラスすべてをその1つのメインクラスのネストされた静的クラスとして配置します(基本的に「classEvents」は単なる名前空間になります)。Googleはプロトコルバッファを使用してこれを行っているようです。
Javaの経験が十分でないため、どのアプローチが標準として受け入れられているかを判断できません。1つのディレクトリに数千のファイルがあっても大丈夫ですか?さらにパッケージを作成する必要がありますか?(他のライブラリ/フレームワークを見ると、パッケージの数を最小限に抑えているようです)
他の場合、特に戦略パターンを実装するときは、静的ファクトリメソッドを使用して1つのパブリックベースクラスを作成し、1つのファイルに保持できるようにいくつかの非パブリッククラスを作成します。これらの「設計」の選択は、クラスルールごとにこの1つのパブリックタイプのみに基づいて行っているようです。それを行うたびに、この質問が返ってきます...たぶん私はそれを正しく行っていません。