Mis dos centavos por tal y vieja pregunta
Algunas personas ya mencionaron, practican y refactorizan. Creo que el orden correcto para aprender sobre patrones es este:
- Aprenda el desarrollo impulsado por pruebas (TDD)
- Aprender refactorización
- Aprender patrones
La mayoría de las personas ignora 1, muchos creen que pueden hacer 2, y casi todos van directamente por 3.
Para mí, la clave para mejorar mis habilidades de software fue aprender TDD. Puede ser mucho tiempo de codificación lenta y dolorosa, pero escribir sus pruebas primero ciertamente lo hace pensar mucho sobre su código. Si una clase necesita demasiado repetitivo o se rompe fácilmente, comienzas a notar malos olores bastante rápido
El principal beneficio de TDD es que pierde el miedo a refactorizar su código y lo obliga a escribir clases que son altamente independientes y coherentes. Sin un buen conjunto de pruebas, es demasiado doloroso tocar algo que no está roto. Con la red de seguridad, realmente se aventurará a realizar cambios drásticos en su código. Ese es el momento en que realmente puedes comenzar a aprender de la práctica.
Ahora llega el punto en el que debes leer libros sobre patrones y, en mi opinión, es una completa pérdida de tiempo esforzarse demasiado. Solo entendí muy bien los patrones después de notar que hice algo similar, o podría aplicarlo al código existente. Sin las pruebas de seguridad o los hábitos de refactorización, hubiera esperado hasta un nuevo proyecto. El problema de usar patrones en un proyecto nuevo es que no ves cómo impactan o cambian un código de trabajo. Solo entendí un patrón de software una vez que refactoricé mi código en uno de ellos, nunca cuando introduje uno nuevo en mi código.