Nach dem Aussehen der Frage, die Sie gestellt haben, sind Sie gerade dabei, sie zu übertreiben. Ich denke, es ist ein häufiges Problem bei Menschen, die die Bedeutung von gutem Design entdecken.
Es ist tatsächlich ein natürlicher und wahrscheinlich sogar notwendiger Schritt mit jeder Fähigkeit, die Sie erlernen. Wenn Sie anfangen, etwas zu lernen, sind Ihre Ergebnisse umso besser, je besser Sie die Kenntnisse einer Fertigkeit vertiefen und je mehr Sie sie anwenden. Das Problem ist, dass Ihr neues Ziel nicht die Qualität Ihrer Ergebnisse ist, sondern wie viel Wissen Sie über Ihre Fähigkeiten gesammelt haben.
Wahre Meisterschaft einer Fähigkeit beinhaltet das Verständnis, wann man sie einsetzt und wann nicht. Eine Überbeanspruchung dieser Fähigkeit ist wahrscheinlich die einzige Möglichkeit, ein solches Verständnis zu entwickeln. Natürlich können Sie darüber lesen, aber Lesen ist kein Ersatz für Erfahrung.
Zum einen ist das Lesen von Designmustern meiner Meinung nach ein schlechter Anfang. Es ist besser, über OO-Konstruktionsprinzipien wie SOLID und GRASP zu lesen . Nachdem Sie sich mit ihnen vertraut gemacht haben, ist es eine gute Idee, gängige Entwurfsmuster zu studieren, denn Sie werden sehen, wie diese Prinzipien angewendet werden können, um konkrete Redewendungen zu bilden.
Es wird behauptet, dass der Sprache tatsächlich ein Merkmal fehlt, wenn beim Gebrauch einer Sprache Muster auftauchen. Obwohl diese Aussage sehr radikal ist, steckt eine Menge Wahrheit darin. Daher würde ich vorschlagen, dass Sie sich andere Sprachen ansehen und damit herumspielen, um ein besseres Verständnis für die Konzepte zu erlangen, die Sie anwenden möchten, und auch, um neue Konzepte kennenzulernen. Eine Auswahlliste wäre Squeak, Ruby und Lisp.
In Bezug auf List ist meine persönliche Empfehlung die Struktur und Interpretation von Computerprogrammen , die mir viel über Design beigebracht hat, indem sie mir zeigt, wie mühelos man robuste Lösungen für komplexe Probleme mit wenig mehr als klarer Abstraktion und (De-) Komposition erstellen kann von oben nach unten.
Folgendes schlage ich vor:
- schreibe Code (und versuche zu verstehen, was ihn schlecht macht)
- Code lesen (und versuchen zu verstehen, was ihn gut macht)
- Wissen mit anderen Menschen austauschen. Stellen Sie Ihre Ideen auf die Probe.