Dagli sguardi della domanda di codereview che hai posto, sei nella fase di esagerare. Penso che sia un problema piuttosto comune tra le persone che scoprono l'importanza di un buon design.
In realtà è un passaggio naturale e probabilmente persino necessario con qualsiasi abilità acquisita. Quando inizi a imparare qualcosa, più avanzi nella conoscenza di un'abilità e più la applichi, migliori sono i risultati e sembra che tu stia andando dritto alla padronanza. Il problema è che il tuo nuovo obiettivo non diventa la qualità dei tuoi risultati, ma quanta conoscenza hai accumulato sulla tua abilità.
La vera padronanza di un'abilità comporta la comprensione di quando usarla e quando non farlo. L'uso eccessivo di tale abilità è probabilmente l'unico modo per sviluppare tale comprensione. Certo, puoi leggere su questo, ma la lettura non è un sostituto dell'esperienza.
Per prima cosa, leggere IMHO è un brutto inizio IMHO. Leggere sui principi di progettazione OO, come SOLID e GRASP è meglio. Dopo averli conosciuti, studiare dei modelli di progettazione comuni è una buona idea, perché vedrai come questi principi possono essere applicati per formare modi di dire concreti.
Si afferma che quando emergono schemi nell'uso di una lingua, la lingua in realtà manca di una caratteristica. Mentre questa affermazione è molto radicale, c'è molta verità in essa. Pertanto, suggerirei di guardare e giocare con altre lingue per comprendere meglio i concetti che stai cercando di utilizzare e anche per conoscere nuovi concetti. Una lista sarebbe Squeak, Ruby e Lisp.
Per quanto riguarda List, la mia raccomandazione personale è la struttura e l'interpretazione dei programmi per computer , che mi ha insegnato molto sul design, mostrandomi quanto si possa facilmente creare soluzioni solide a problemi complessi, con poco più che chiara astrazione e (de) composizione in un modo dall'alto verso il basso.
Quindi ecco cosa suggerisco:
- scrivere codice (e cercare di capire cosa lo rende negativo)
- leggi il codice (e cerca di capire cosa lo rende buono)
- scambiare conoscenze con altre persone. metti alla prova le tue idee.