3

モジュールを設計する必要があるときは、通常どのように進むのですか?これまでは、使いやすさ、APIの使いやすさ、拡張性、パフォーマンスなどを配慮しました。モジュールの設計方法は?

しかし、私にはかなり簡単でわかりやすいものがあります。は他のユーザーのために複雑すぎるようです。それは頻繁に起こるわけではありませんが、時には私たち全員に起こります(私は願っています)。

私がすでに述べた問題以外に、コードを進める前にクラス階層/ API /何を設計する前に自分自身に尋ねるべき質問がありますか?

あなたの質問が別のセクションに適していると思われる場合は、すぐにマイグレーションしてください。

乾杯。

+0

これはコード関連ではありません=プログラマ.stackexchange.comに属します。 – jgauffin

答えて

3

適用されます。

ソフトウェアの作成には一般的な原則がありますが、ここではこの短い答えで、私があなたに適用できる概念を1つ与えることができます。ソフトウェアとは、ドメイン(銀行ソフトウェアが金融システムを調整するために作られたもの、レーダーソフトウェアがレーダー検出の考え方や原則を調整するものなど)です。したがって、ソフトウェアは理論と似ています。これは、ドメインの現在の知識に完全に適合し、推論と拡張を可能にします。より多くの知識が利用可能になった場合、理論は、この新しい知識を受け入れるために拡張され、研磨され、より一般化されなければならない。したがって

、理論に関するすべての概念が適用されます。

  • は均質で、よく統合されたサウンドを統一されたフレームワークであなたの知識によって課される要件を満たします。
  • 単純ですが、より一般的なパターンを探して、これらのパターンをスポットライトして、より良い統合を実現してください。
  • あまりにも単純ではありません。あなたのソフトウェアが要件に合わない場合、あなたの理論はあまりにも限られており、拡張する必要があります。
  • あなたのソフトウェアは新しい要件を満たすことができますが、ソフトウェアは捨てられません。変更され、進化し、新しい要件に対応したり、不要になった機能を失います。

ので、ソフトウェアは、最小限のではなく、あまりにも多く、美しいが、実用的でなければなりません。

それは実際にこれらの方向を置くために来るとき、私はあなたのドメインを学習するための時間を確保することをお勧めします。あなたが理解していないものをモデル化することはできません。基本を学び、簡単なものから始めると、徐々に改善されます。あなたは時折、いくつかの物事が間違った場所に「感じる」ことがわかります。

  • "この操作を担当するのは誰ですか?「
  • 『この依存性は、論理的かつ仕事に、このオブジェクトのために必要とされる、またはそれが原因の悪いコード組織にだけ偽の一つです?』
  • が、 『このハイレベルまたはローレベルの機能ですか?』
  • は、「私は過去を台無しまたは無効にすることなく、将来的にこれを拡張することができますか?」
  • 「私は外を知らコードなしで内部的にこのオブジェクト/レイヤー/サブシステムを変更することができますか?」
  • 「私はこれを繰り返す?アム」
  • 「正しい動作のためにこの機能を簡単にテストして調べることはできますか?」
  • 「それは簡単で直感的に理解し、使用することですか?」
  • 「私は、私はすでに簡単に持っているものを再結合して、新たな動作を実装するために触れることなくすることができますか?」
  • は、「私はそれを表示できるように、この機能は分離されて
  • 私が操作するコードの残りの部分を外にはしないでください」
+0

すばらしい答え、ありがたいです。これは経験が付いていることを知っていますが、それほど多くはありませんので、私はこれらの概念を思いついています。 –

3

SOLID Principleshereを考慮する必要があります。

と責任のassigmentについて

は、あなたの質問は非常に良いもの、との答えを持っている1が、答えは、基本的なプログラミングの経験であることを非常に複雑である GRASP Patterns

関連する問題