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:
- Lernen Sie testgetriebene Entwicklung (TDD)
- Refactoring lernen
- 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.