質問

可能な複製:
デザインパターンに関する標準本はありますか?

デザインパターンの本を読みたいです。 GOFは確かに読むものです。しかし、15年後、それはまだ有効ですが、更新されたものはありませんか?

「種の起源のチャールズダーウィン」のようなものは非常に重要な本であり、いくつかの主要な概念はまだ有効です。

この質問 主な提案は、頭とGOFの本です。しかし、最初に頭はGOFの代替品ではありません。

それで、何か提案または私はGOFに固執する必要がありますか?

役に立ちましたか?

解決

最初に頭を読むことをお勧めします。なぜなら、デザインパターンが必要な理由を説明するより良い仕事をするからです。その後、例と参照としてGOFブックを使用できます。

他のヒント

その本のパターンがもう存在しない日を恐れています。その日は決して来ないでしょう。本を手に入れてください。

GOFに固執します。さらに、以下を読むことをお勧めします。


スティーブン・ジョン・メッツカーの「デザインパターンJava(TM)ワークブック」(ISBN 0201743973)

この本はGOFを補完しているか、Javaを学んでいるか仕事をしている場合は、GOFの代わりに安全に使用できると思います。 C#やRubyなどの他の言語には同様の本が存在しますが、読んでいないので、それらの品質を証明することはできません。


ウィリアムC.ウェイクの「リファクタリングワークブック」(ISBN 0321109295)

リファクタリングはパターンと密接に関連しています。これは読むのに最適なワークブックです。


Brown et al "Antipatterns:リファクタリングソフトウェア、アーキテクチャ、および危機におけるプロジェクト"(ISBN 0471197130)

コインの反対側はアンチパターンで、コードはリファクタリングのために叫ぶ匂いがします。この本は良いです(少なくとも前半はソフトウェア関連のアンチパターンを扱っています。)


Craig Larmansの「UMLとパターンの適用:オブジェクト指向の分析とデザインと反復開発の紹介(第3版)」(ISBN 0131489062)

ラーマンの本は、ソフトウェアエンジニアリングとシステム分析の学部コースのための事実上の優先教科書になりつつあります。それは、反復プロセスでUMLとパターンの利用を歩くのに良い仕事をします。


クリス岡崎の「純粋に機能的なデータ構造」(ISBN 0521663504)

あなたがパターン、アンチパターン、再因子の良い実用的な知識を開発したら、私はこの本を考慮します。これは、純粋に機能的な観点からのパターンとデータ構造の理論的な論文です。

GOF(およびそのバトンを運ぶ本)の1つは、これらのパターンがC ++で最終的に一般的なプログラミングが実現された時代の産物であるということです。そこに提示されたパターンは、OOと手続き型/アルゴリズムのパラダイムに対応するために存在していました。

これらのパターンのいくつか(たとえば、訪問者)には、関数を一流のオブジェクトとして扱う言語に存在する理由はあまりありません。 私はパターンや機能的言語を十分に把握せずにこの本に触れませんが、

あなたはまだそれを必要とします。ダブルチェックと小さな再訪と良い例のために、あなたはそれに戻ってきます。棚に置いてください。あなたがスターターである場合、最初に頭を拾います。それどころか、私はGOFよりも高く評価されている本を見つけることに非常に興味があります:-)

間違いなく周りのコピーを保持するもの。私は最初にソフトウェアを始めてからGOFの本を持っていますが、それはかつて私がそれを読み直すたびにもっと得る本の1つであることがわかりました(そして、私はすべてをカバーすることはありません - カバー - あちこちで奇妙なパターンだけ)。しかし、それは私が「初心者」として感じた本の1つであり、私は自分のキャリアの後半でやったほどそれを得ることができませんでした。より多くの経験を持つことは、本をより面白く、そしてもちろん、より関連性があることを発見しました。

最初に頭に行きます。通常の方法でコードを書く方法、適切な方法で行われない修正による問題、適用する設計原則、リファクタル、および使用したパターンを指します。

デザインの原則が最も便利であることがわかりました。原則が説明されていなければ、パターンに悩まされなかったでしょう

それはあなたの範囲に大きく依存します。あなたがエンタープライズJava/C#またはハードコードC ++タイプの場合、はい、GOFを入手して、おそらくこのトピックに関する他の本も入手してください(他の回答を参照)。ただし、高次関数とより高度な概念を備えた動的言語で作業することを想像できる場合、ほとんどのパターンは必要ありません。さらに悪いことに、言語用語で考えるのではなく、その力を使用して(AB)を実装するパターンを探しているため、生産性が低くなります。 Python、Ruby、(Modern)Perl、Erlang、Scala、Clojure、lispを見ると、それらのすべての言語で、GOFからのパターンは必要ありません。率直に言って、パターンは固有の問題を解決する良い方法です高次構造のない言語へ。

そうは言っても、とにかくパターンを学びますが、それらに批判的であり、適切かつ控えめに使用することを学びます。彼らは銀の弾丸ではなく、決してそうなることはありません。

間違いなくGOFから始めてください - しかし、それが出てきたので、さまざまなパターンカタログが含まれている多数の本があります(「署名」シリーズのほとんどが思い浮かびます。 ポアア また エンタープライズ統合パターン)パターンのアイデアをより具体的な領域に取り入れます。

また、いくつかのパターンの実装は、あなたが働いている言語に応じて少し古風なものである可能性があることを忘れないでください。たとえば、JavaコードをC#でほとんど実装できます(そして、それは大丈夫だったでしょう。 C#1はノックしていました)あなたは、いくつかの現代言語の特徴が提供する可能性を逃すことになるでしょう。具体的には.netのために私は好きです DotFactoryの例, ジュディス・ビショップの本 かなり良いです。

ライセンス: CC-BY-SA帰属
所属していません softwareengineering.stackexchange
scroll top