Javaアプリケーション[シンプルコンソールアプリからJ2EEアプリへ]]を設計する際に留意すべき一般的なガイドラインとベストプラクティスは何ですか。
こんにちは
私は最近、Javaプログラミングチュートリアルと実践的なコアJavaのプログラミング経験があります)を完了しました。これで、継承、抽象化、多態性、カプセル化
Javaコードは問題なく作成していますが、アプリケーションの設計がよくわかりません。これが私の主な問題です:アプリケーションの「設計」です。アプリケーションを作成するタスクを指定した場合Javaでは、何から始めればいいですか?どう考えればいいですか?クラス階層の開発中に従うべき公式/非公式のガイドライン?私は本当に混乱しています(抽象クラス、インターフェース、またはサブクラス..?)。コードを書く前に、すべて?
私のような人々にとって、新しいJavaアプリケーションの開発を開始する際に従うことができる一連の一般的なガイドライン/ベストプラクティスを用意することは非常に役立ちます。
私が読んだり使用したりするべきいくつかのガイドライン/考え/本/リソース/ツールを提供してください
事前に感謝スコット
さまざまなドメインにさまざまなJavaアプリが存在するため、本当に一般的なアドバイスをすることは困難です。しかし、絶対に推奨される本は、Eric Evansによる Domain Driven Design です。簡単な紹介については Wikipedia も参照してください。
一般的なアドバイス:
私の意見では、すべては以下に会うことに要約されます
上記を達成するために、経験に基づいて専門家によって提案された特定のガイドラインと原則があります
これらのガイドラインと原則は、プログラミングのパラダイムや言語から独立しています。ただし、OOP言語は、これらの実装を容易にします。
GRASP原則 をご覧になることをお勧めします。これは、優れた設計基準スキルを提供します。
さまざまなパラダイムがあります(多くの場合、3文字の頭字語)。
これらのキーワードを使用すると、ウェブ上で多くの情報を見つけることができます。
J2EEでは、SDDが最も使用されていると言えます(現在、最適なソリューションであるかどうかは不明ですが、非常に「正規化」されています):サービス(ソフトウェア「インテリジェンス」)>ドメイン(永続性)> DAO(永続性)。
現在、DDDはますます使用されるようになっています。概念は、「ソフトウェアインテリジェンス」層をとっているドメインオブジェクトに再び焦点を当てています。
スタックオーバーフローへようこそ。 Javaに慣れている場合は、 Head First Design Patterns。 および Head First Object-Oriented Analysis and Design をお読みください。
ボールが正しい方向に回転するUMLクラス図を調べてから、ギャングオブフォーデザインパターンを見てみましょう。これは優れた最初のステップです。
http://en.wikipedia.org/wiki/Class_diagram
http://en.wikipedia.org/wiki/Design_Patterns
最後に、Spring Frameworkのような優れたオープンソースコードを注ぎます。
TDDを使用した新しいデザインをお勧めします。
Java設計に固有のものは何もないと思います。オブジェクト設計についてすでに知っている場合は、準備ができています!
設計せずにすぐにコーディングを開始しないでください。しかし、これはコーディングの前にすべてを設計する必要があるという意味ではありません。以前の経験から、修正を必要としないデザインはありませんでした。特に、プログラミング言語を初めて使用する場合は、使用している言語の機能と利用可能なライブラリに応じてデザインが変わります。私のアドバイスは、継承、ポリモーフィズム、カプセル化などのオブジェクト指向デザインの最も重要な側面に基づいた一般的なデザインを作成することです。この一般的なデザインとプログラミング中に遭遇するニーズから始めて、それに応じてデザインを修正してください。
言語に慣れると、最初の一般的なデザインは、プログラムに対してはるかに効率的な方法で適合します。
ほとんどの人は、1つのオブジェクト指向設計を任意のオブジェクト指向言語で記述できるようにする必要があると言いますが、そのような非常に優れた汎用設計を持つことはそれほど簡単ではありません。より現実的に考えると、特定のデザインの実装に使用される言語を無視することは、私が考える限り、良い方法ではありません。
オッズは、あなたがやろうとしていることはすでに以前に行われていることです-少なくとも似たようなもの。幸いなことに、最近はオープンソースのものがたくさんあります。したがって、本当にわからない場合にできることの1つは、同じことを行う複数のオープンソースアプリケーションをダウンロードして研究することです。それはあなたに良いスタートを与えるでしょう。