特に Java/J2EE テクノロジーの設計が得意になるために、プログラマーが知っておくべきことを知りたいです。
3 に答える
まず、グッド デザインは、デザインの実装に使用する言語を超えます。優れたソフトウェア設計とは、複雑さを管理して、堅牢で保守可能な理解しやすいコードを作成することです。キーポイントは
- いつでも最高レベルの抽象化で作業できます
- 複雑な領域をカプセル化して隠す
- 明確で一貫したネーミングの価値を理解する
私の考えでは、優れたデザインは、優れた実践を理解することと創造的であることの組み合わせによって達成されます。そして、私の経験では、設計の最も難しい部分は、問題をより小さなサブ問題に適切に機能的に分解することです。この分解を達成するプロセスは、体系的なトップダウン プロセスではなく、ほとんどの場合、反復プロセスであることを理解することが重要です。保守可能なものができるまで、以前の設計の分解を変更または破棄する準備をする必要があります。
良いデザインについて語ることは難しく、特に 2 つのことは言うまでもありません
- オブジェクト指向プロセス
- デザインパターン
オブジェクト指向の言語もあれば、純粋なオブジェクト ベースの言語もあれば、オブジェクト ベースの設計が広く普及する前に作成された C などの言語もありますが、原則と実践はどの言語にも適用できます。私が書くコードのほとんどは C で書かれており、可能な場合はオブジェクトのようなプラクティスを使用するようにしています。
デザイン パターンは、一般的な問題に対する適切な解決策を提示し、これらの解決策に名前を付けます。デザイン パターンの研究は、優れたデザインが実現できることを理解するための鍵であることがわかりました。
私はいくつかのことをお勧めします:
- いくつかのデザインパターンについて読んでください。オリジナルのGangofFourの本は、オブジェクト指向デザインに役立ちます。エンタープライズアプリケーションを作成している場合、MartinFowlersエンタープライズアプリケーションアーキテクチャの本をあまりお勧めできません。
パターンは、自分自身と他の人の両方にデザインを説明するための重要な言葉を与えます。さまざまなアプローチについて読むだけで、新しい可能性がわかります。J2EEを見ている場合は、制御の反転のようなパターンが不可欠です。
- 緩い結合にこだわる
優れた設計の本質は、密結合を防ぐことです。コードを緩く結合するレイヤーに移動するために使用できるものはすべて、全体的な設計に役立ちます。
- 他の人のコードを読んでください。あなたの技術分野で注目を集めるオープンソースコードを研究してください。
他の人のコードをすぐに勉強するだけで、雑然とした大きな泥だんごのアプローチと比較して、見栄えの良いデザインの感触が得られます。