D'après l'apparence de la question de révision du code que vous avez posée, vous êtes en train d'en faire trop. Je pense que c'est un problème assez courant chez les personnes qui découvrent l'importance d'un bon design.
C'est en fait une étape naturelle et probablement même nécessaire avec toutes les compétences que vous ramassez. Lorsque vous commencez à apprendre quelque chose, plus vous progressez dans la connaissance d'une compétence et plus vous l'appliquez, meilleurs sont vos résultats et il semble que vous vous dirigiez directement vers la maîtrise. Le problème est que votre nouvel objectif ne devient pas la qualité de vos résultats, mais la quantité de connaissances que vous avez accumulées sur votre compétence.
La véritable maîtrise d'une compétence implique de comprendre quand l'utiliser et quand ne pas l'utiliser. L'utilisation excessive de cette compétence est probablement le seul moyen de développer une telle compréhension. Bien sûr, vous pouvez lire à ce sujet, mais la lecture ne remplace pas l'expérience.
D'une part, la lecture des modèles de conception est un mauvais départ à mon humble avis. La lecture des principes de conception OO, tels que SOLID et GRASP est meilleure. Après les avoir connus, l'étude des modèles de conception courants est une bonne idée, car vous verrez comment ces principes peuvent être appliqués pour former des idiomes concrets.
On prétend que lorsque des modèles émergent dans l'utilisation d'une langue, alors la langue manque en fait de fonctionnalité. Bien que cette déclaration soit très radicale, elle contient beaucoup de vérité. Par conséquent, je vous suggère de regarder et de jouer avec d'autres langues pour mieux comprendre les concepts que vous cherchez à utiliser et également pour en apprendre davantage sur de nouveaux concepts. Une liste restreinte serait Squeak, Ruby et Lisp.
Quant à List, ma recommandation personnelle est Structure et interprétation des programmes informatiques , qui m'a beaucoup appris sur la conception, en me montrant à quel point on peut créer sans effort des solutions robustes à des problèmes complexes, avec à peine plus d'abstraction claire et de (dé) composition en de manière descendante.
Voici donc ce que je suggère:
- écrire du code (et essayer de comprendre ce qui le rend mauvais)
- lire le code (et essayer de comprendre ce qui le rend bon)
- échanger des connaissances avec d'autres personnes. mettez vos idées à l'épreuve.