Por el aspecto de la pregunta de la vista de código que hiciste, estás en la etapa de exagerar. Creo que es un problema bastante común entre las personas que descubren la importancia de un buen diseño.
En realidad, es un paso natural y probablemente incluso necesario con cualquier habilidad que recojas. A medida que comienza a aprender algo, cuanto más avance en el conocimiento de una habilidad y cuanto más la aplique, mejores serán sus resultados y parecerá que se dirigió directamente al dominio. El problema es que su nuevo objetivo no se convierte en la calidad de sus resultados, sino en la cantidad de conocimientos que ha acumulado sobre su habilidad.
El verdadero dominio de una habilidad implica la comprensión de cuándo usarla y cuándo no. El uso excesivo de esa habilidad es probablemente la única manera de desarrollar tal comprensión. Claro, puedes leer sobre esto, pero leer no es un sustituto para la experiencia.
Por un lado, leer sobre patrones de diseño es un mal comienzo, IMHO. Leer sobre los principios de diseño de OO, como SOLID y GRASP es mejor. Después de familiarizarse con ellos, el estudio de patrones de diseño comunes es una buena idea, ya que verá cómo esos principios pueden aplicarse para formar modismos concretos.
Se afirma que cuando los patrones emergen en el uso de un idioma, entonces el lenguaje en realidad carece de una característica. Si bien esta afirmación es muy radical, hay mucha verdad en ella. Por lo tanto, sugiero que mire y juegue con otros idiomas para obtener una mejor comprensión de los conceptos que desea emplear y también para aprender sobre nuevos conceptos. Una lista sería Squeak, Ruby y Lisp.
En cuanto a la Lista, mi recomendación personal es Estructura e interpretación de los programas de computadora , que me enseñó mucho sobre diseño, al mostrarme cómo se puede crear soluciones sólidas para problemas complejos sin esfuerzo, con poco más que una abstracción clara y (de) composición de manera descendente.
Así que esto es lo que sugiero:
- escriba el código (y trate de entender lo que lo hace malo)
- lee el código (y trata de entender qué lo hace bueno)
- intercambiar conocimientos con otras personas. ponga sus ideas a prueba.