web-dev-qa-db-ja.com

Javaプロジェクトを構造化するための適切なプログラミングプラクティスは何ですか?

私はJavaプロジェクトが比較的大きくなりつつある(全部で数千行になると思います)と言います。)これまでに扱ってきたものよりも明らかに大きくなっています。私はまだ比較的新しいプログラマーです。

私は自分のSwingコンポーネントと他のクラスを含むクラス構造を持っていますが、それはますます、混乱しています。初心者であっても、これは「プログラミングの実践」とは見なされないことは確かです。説明がやや難しいので、コード全体をコピーして貼り付けることはできません。これは、プログラム全体を扱っているためです。しかし、私は説明するために最善を尽くします...

例として、「Minion」クラスがあり、Minionオブジェクトは、拡張JPanelである「levelGUI」を更新する必要がある場合があります。彼らはどのようにこのlevelGUIにアクセスしますか?私は "Game.getLevelGUI()。someMethod()"のようなものを彼らに話します、そしてそれはただずさんに見えます。私が間違っている?

問題は、プログラムの構造がどのように機能するかについての私の理解と比較して、実際のプログラミングで自分よりも先に進んだことです。この道をたどっていくと、最終的には意図したとおりに機能するプログラムですが、可読性が低く、道を変えることが非常に困難です。

これが答えるのが難しい質問のように思われる場合、オブジェクトの大きな階層がどのように効果的に「相互作用」するか、またはその効果に対して何かを説明できる記事へのリンク...は非常に役立ちます(私は怠惰ではなく、見ていました、何かを見つけようとしています)。

4
rbusch90

コードのリファクタリングについて、段階的に検討できることはほとんどありません。あなたのプロジェクトについての短いアイデアに基づいているように、ここでの短いガイドラインは、コードをたくさん書き直すよりも少しだけ良いものにします。

  1. GUIコードを分離し、その中でモデルビューコントローラーモデルなどのさらなる改善を考えることができます。

  2. ユーティリティに使用される共通クラスをユーティリティモジュールに移動し、そのjarを必要なモジュールにインポートしてみてください。

  3. データベースまたはコアコーディングがある場合、それらはコアモジュールとして移動できます。

  4. クラスをグループ化するには、Javaパッケージ命名の標準的な方法を使用してください。

  5. コーディング標準ツールを使用してコメントを追加し、読みやすさを向上させます。

そして、可能であれば、Sonarを使用してプロジェクトコードを分析します: http://www.sonarsource.org/ これにより、改善に向けて動きます。

2
Senthil

GUIの整理に関する私のお気に入りのリソースは、Martin Fowlerによるものです。

http://martinfowler.com/eaaDev/uiArchs.html

http://martinfowler.com/eaaDev/OrganizingPresentations.html

そしてそこに記述されたパターン

2
kleopatra

久しぶりにSwingプロジェクトをやろうとしたときも同じような経験をしました。 Webアプリケーションを開発した後、これらのちょっとした問題を解決するためにいくつかのパターンをすぐに見ることができますが、Swingではすべてがぼやけて見えました。

私の経験から共有したいことはほとんどありません。

  • 私はMVCをフォローしました。ナビゲーションコントロールなどをコントローラーに移動することを考えてください。
  • 異なるコントローラを分離するために、 Mediator に従いました。正確には、コントローラー間の通信手段を提供します。
  • また、プロジェクトで Observer パターンの使用を発見しました。あなたもそれを読んで、それを使って何かが解決できるかどうかを見てください。
1
Adeel Ansari