Dall'aspetto della domanda sulla schermata del codice che hai chiesto, sei nella fase di strafare. Penso che sia un problema piuttosto comune tra le persone che scoprono l'importanza del buon design.
In realtà è un passo naturale e probabilmente anche necessario con qualsiasi abilità che raccogli. Quando inizi a imparare qualcosa, più avanzi nella conoscenza di un'abilità e più la applichi, migliori sono i tuoi risultati e sembra che tu sia diretto verso la maestria. Il problema è che il tuo nuovo target non diventa la qualità dei tuoi risultati, ma quanta conoscenza hai accumulato sulla tua abilità.
La vera padronanza di un'abilità implica la comprensione di quando usarla e quando no. Abusare di quell'abilità è probabilmente l'unico modo per sviluppare tale comprensione. Certo, puoi leggere su questo, ma leggere non è un sostituto per l'esperienza.
Per prima cosa, leggere gli schemi di progettazione è un brutto inizio. IMHO. Leggere i principi di progettazione OO, come SOLID e GRASP è migliore. Dopo averli conosciuti, studiare gli schemi di progettazione comuni è una buona idea, perché vedrai come questi principi possono essere applicati per formare idiomi concreti.
Si sostiene che quando i modelli emergono nell'uso di una lingua, la lingua in realtà manca di una caratteristica. Mentre questa affermazione è molto radicale, c'è molta verità in essa. Quindi suggerirei, guardate e giocherete con altre lingue per ottenere una migliore comprensione dei concetti che state cercando di impiegare, e anche per conoscere nuovi concetti. Una lista dei preferiti sarebbe Squeak, Ruby e Lisp.
Per quanto riguarda List, la mia raccomandazione personale è Struttura e interpretazione dei programmi per computer , che mi ha insegnato molto sul design, dimostrandomi in che modo è possibile creare soluzioni robuste a problemi complessi, con poco più di una chiara astrazione e (de) composizione dall'alto verso il basso.
Quindi ecco cosa suggerisco:
- scrivi codice (e cerca di capire cosa lo rende cattivo)
- leggi il codice (e cerca di capire cosa lo rende buono)
- scambiare conoscenze con altre persone. metti alla prova le tue idee.