351 Stimmen

Wie studiert man Entwurfsmuster?

Ich habe etwa 4-5 Bücher über Entwurfsmuster gelesen, aber ich habe immer noch nicht das Gefühl, dass ich mich der Zwischenstufe in Entwurfsmustern genähert habe.

Wie sollte ich mich mit Entwurfsmustern beschäftigen?

Gibt es ein gutes Buch über Entwurfsmuster?

Ich weiß, dass dies nur mit Erfahrung möglich ist, aber es muss doch eine Möglichkeit geben, diese zu meistern?

236voto

Darren C Punkte 2406

Ich habe drei Bücher gelesen und verstand die Muster immer noch nicht sehr gut, bis ich las Head First Design Patterns von OReilly. Dieses Buch hat mir die Augen geöffnet und wirklich gut erklärt.

alt text

223voto

Joseph Ferris Punkte 12354

Am besten ist es, wenn man mit ihnen zu kodieren beginnt. Design Patterns sind ein großartiges Konzept, das sich nur schwer anwenden lässt, wenn man über sie liest. Nehmen Sie einige Beispielimplementierungen, die Sie online finden, und bauen Sie um sie herum auf.

Eine hervorragende Quelle ist die Daten- und Objektfabrik Seite. Sie gehen auf die Muster ein und geben Ihnen sowohl konzeptionelle als auch praxisnahe Beispiele. Auch ihr Referenzmaterial ist großartig.

121voto

SystematicFrank Punkte 15587

Meine zwei Cent für eine so alte Frage

Einige haben es bereits erwähnt: Übung und Refactoring. Ich glaube, die richtige Reihenfolge, um etwas über Muster zu lernen, ist diese:

  1. Lernen Sie testgetriebene Entwicklung (TDD)
  2. Refactoring lernen
  3. Muster lernen

Die meisten Menschen ignorieren 1, viele glauben, dass sie 2 schaffen können, und fast alle gehen direkt zu 3 über.

Für mich war der Schlüssel zur Verbesserung meiner Softwarekenntnisse das Erlernen von TDD. Es mag eine lange Zeit des mühsamen und langsamen Programmierens sein, aber wenn man seine Tests zuerst schreibt, denkt man viel über seinen Code nach. Wenn eine Klasse zu viel Boilerplate braucht oder leicht kaputt geht, merkt man sehr schnell, dass es stinkt

Der Hauptvorteil von TDD ist, dass Sie die Angst vor dem Refactoring Ihres Codes verlieren und gezwungen sind, Klassen zu schreiben, die in hohem Maße unabhängig und zusammenhängend sind. Ohne einen guten Satz von Tests ist es einfach zu schmerzhaft, etwas anzufassen, das nicht kaputt ist. Mit dem Sicherheitsnetz werden Sie sich wirklich an drastische Änderungen an Ihrem Code wagen. Das ist der Moment, in dem Sie wirklich anfangen können, aus der Praxis zu lernen.

Jetzt kommt der Punkt, an dem man Bücher über Muster lesen muss, und meiner Meinung nach ist es eine völlige Zeitverschwendung, sich zu sehr anzustrengen. Ich habe Patterns erst richtig verstanden, nachdem ich gemerkt habe, dass ich etwas Ähnliches tue, oder dass ich das auf bestehenden Code anwenden kann. Ohne die Sicherheitstests oder die Gewohnheiten des Refactoring hätte ich bis zu einem neuen Projekt gewartet. Das Problem bei der Verwendung von Mustern in einem neuen Projekt ist, dass man nicht sieht, wie sie sich auf einen funktionierenden Code auswirken oder ihn verändern. Ich habe ein Software-Muster erst dann verstanden, wenn ich meinen Code in eines dieser Muster umstrukturiert habe, niemals, wenn ich ein Muster neu in meinen Code einführte.

70voto

Pedro Duarte Punkte 805

Derek Banas hat auf Youtube Anleitungen für die Gestaltung von Mustern gemacht, die ich sehr mag:

http://www.youtube.com/playlist?list=PLF206E906175C7E07

Sie können etwas kurz sein, aber durch sein Timing und seine Präsentation sind sie sehr unterhaltsam zu lernen.

38voto

Paul Sonier Punkte 37609

Üben, üben, üben.

Man kann jahrelang darüber lesen, wie man Cello spielt, und trotzdem nicht in der Lage sein, einen Bogen zu spannen und etwas zu machen, das wie Musik klingt.

Entwurfsmuster werden am besten als ein Thema auf hoher Ebene erkannt, das nur dann relevant ist, wenn Sie die nötige Erfahrung haben, um sie als nützlich zu erkennen. Es ist gut, dass Sie erkennen, dass sie nützlich sind, aber wenn Sie keine Situationen erlebt haben, in denen sie anwendbar sind oder angewendet wurden, ist es fast unmöglich, ihren wahren Wert zu verstehen.

Nützlich werden sie dann, wenn man Entwurfsmuster im Code anderer erkennt oder in der Entwurfsphase ein Problem erkennt, das gut zu einem Muster passt, und dann das formale Muster und das Problem untersucht und feststellt, was das Delta zwischen ihnen ist und was das über das Muster und das Problem aussagt.

Es ist wirklich dasselbe wie beim Programmieren; K&R mag die "Bibel" für C sein, aber wenn man sie mehrmals von vorne bis hinten liest, bekommt man einfach keine praktische Erfahrung; es gibt keinen Ersatz für Erfahrung.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X