ソフトウェアのデザイン哲学:章XI二回デザイン

ディレクトリ

モジュールやシステムを構築する方法についてのあなたの最初の考えは最高のデザインを生成する可能性が低いので、デザイン・ソフトウェアは、困難です。あなたはそれぞれの主要な設計上の決定のためのオプションの数を考えているなら、あなたはより良い結果を取得します:デザインを二回

あなたは、設計管理GUIのテキストファイルをテキストエディタのためにそのカテゴリを想定しています。彼らの選択のアイデアは、最初に頭に浮かぶ、いくつかの可能性を検討することをお勧めします。最初のステップは、インタフェースクラスは、エディタの残りの部分に提示される定義することです。1つのオプションは、それが挿入を持って、ライン・インタフェース用で、変更、およびテキストの行全体を削除します。別のオプションは、インタフェースの単一文字の挿入・削除に基づいています。第三の選択肢は、列指向のインターフェイス、クロスバンク動作可能な文字の任意の範囲です。この時点で、最も重要な方法のいくつかは十分にあるスケッチ、あなたは、各オプションの各プロパティを決定する必要はありません。

あなたはもっと学びますように、互いに非常に異なるこれらのメソッドを選択するようにしてください。あなたが唯一の合理的なアプローチを決定した場合でも、あなたは第2の設計を考えてどのように悪いに関係なく、我々は第2の設計を考慮する必要があります。設計上の弱点での反射や他のデザインの特徴と比較が参考になります。

あなたが代替設計をスケッチした後、各オプションの長所と短所を示しています。最も重要な考慮事項は、ソフトウェアへの高レベルのインタフェースのための使いやすさです。上記の例では、行指向のインターフェイスと文字指向のインターフェイスは、テキストクラスのソフトウェアを使用することで、余分な作業が必要です。行と列の部分(例えば、カット及び選択を貼り付け)の複数の動作中に、行指向インターフェースは、より高いレベルのソフトウェアが必要になり、分割線に接続されています。修飾されたサイクル動作を必要とする文字指向インターフェースは、複数の文字を実装しています。また、他の要因を考慮する価値があります:

  • インタフェースの代わりに、別のより簡単である?テキストの例では、すべてのテキストインターフェイスは比較的単純です。
  • インターフェイスは、より汎用性の高い他のインタフェースそれよりも?
  • インターフェースは、テキストの例では?他のインターフェイスよりも効果的であることが可能であることは、各文字ごとに個別のテキストモジュールを呼び出す必要があるため、文字指向のアプローチは、他の方法よりもはるかに遅くなることがあります。

あなたは異なるデザインを比較すると、あなたはより良い最高のデザインを決定することができます最良のオプションは、代替かもしれない、またはあなたがオリジナルの新しいデザインの任意のより良い選択にいくつかの選択肢の機能を組み合わせることができますを見つけることがあります。

この問題が発生したときに、他のオプションを提案することができれば時々、オプションは特に魅力的ではない、参照してください。新しいデザインを駆動するための最初の選択肢で識別あなたの問題を使用してください。テキストタイプを設計し、そして唯一の文字指向のアプローチと行指向を検討している場合、あなたはそれが追加のテキスト操作を実行するためのソフトウェアのより高いレベルを必要とするための代替方法のそれぞれは、非常に厄介であることを気づくことがあります。これは危険信号です:クラスのテキストがある場合、それはすべてのテキスト操作を処理する必要があります。追加のテキストを解消するためには、テキストインターフェースは、より密接操作は、高度なソフトウェアで行わ一致する必要があります。これらの操作は、常に単一の文字または単一の行に対応していません。推論のこのラインは、このように従来の設計の問題を解消する、テキスト指向APIのスコープを提供する必要があります。

二つの設計原理は、システムの多くのレベルに適用することができます。モジュールでは、最初に述べたように、インターフェイスを選択するには、このメソッドを使用することができます。そして、あなたは再びそれを達成するために設計を適用することができます:テキストタイプの場合、あなたは固定サイズの文字ブロックまたは「ギャップバッファゾーン」などを達成するために、行チェーンなどを考慮することができます。「目標とのインタフェースの実装は異なります達成するために、最も重要なことは、シンプルさと性能はまた、ユーザーインターフェースのための機能を選択するときのように、より高いレベルのシステムで設計の多様性を探求するのに便利です。メインシステムをモジュールに分解されたとき。それぞれの場合に、あなたはいくつかの選択肢を比較することができるかどうか、最善の方法を決定することは容易です。

2つのデザインは、余分な多くの時間を費やす必要はありません。小さなモジュール(例えばクラス)に対しては、代替案を検討する時間が12時間以上を必要としない場合があります。あなたは、このクラスを実装するために数日または数週間を過ごすことになり、時間と比較すると、これは時間のほんの一部です。実験のオリジナルデザインは、それがより良い設計するために2倍の時間を要したよりも可能性の高い優れたデザインを生成することです。大きなモジュールの場合、あなたは、初期設計探査でより多くの時間を過ごすことになりますが、達成するために長い時間がかかりますし、より良い設計のメリットは大きくなります。

私は「二度設計」の原則が本当に賢い人に受け入れられることが困難な場合があることに気づきました。彼らが成長すると、賢者は良い結果を得るために十分に迅速にすべての問題に彼らの最初の考えを見つける;第二または第三の可能性を検討する必要はありません。それは悪い仕事の習慣を開発するのは簡単です。しかし、これらの人々の年齢の成長と、彼らはますます困難な環境に昇格されるだろう。最後に、誰もが臨界点に達すると、あなたの最初に考えたのは、もはや良い十分ではありません。あなたが本当に良い結果を取得したい場合、あなたは、第二、または第三、あなたはどのようにスマートに関係なくを検討する必要があります。大規模なソフトウェアシステムの設計は、このカテゴリに分類されます。誰もが右の最初の試行でそれを置くのに十分な能力を持っていません。

残念ながら、私は頻繁にスマートな人々は、彼らが(また、彼らは仕事でイライラ感じさせる)彼らの本当のポテンシャルを再生させない、心に来る最初のアイデアの実現を主張参照してください。たぶん、彼らは無意識のうちに、彼らはデザインの多様性をしようとした場合ので、それは彼らが賢明でないということは、「スマートな人々は初めて、成功することができます」と信じています。そうではありません。これは、問題は本当に難しいです、あなたがスマートではないと言っているわけではありません。また、これは良いことです:簡単な問題を解決するよりも、問題について慎重に検討する必要性を解決するためには、はるかに興味深い考える必要はありません。

あなたの設計を改善するだけでなく、あなたの設計能力を向上させるためだけでなく、設計された2つの方法。プロセスの設計と様々な方法を比較し、より良い設計か悪い要因を作ることをお教えします。時間が経つにつれて、これはそれが簡単に悪いデザインを排除し、そしてどのような本当に素晴らしいデザインに集中するようになります。

おすすめ

転載: www.cnblogs.com/peida/p/12078980.html