Hace poco encontré un libro de diseño de software titulado Software Design Decoded – 66 Ways Experts Think, donde se exploran hábitos, prácticas y principios que los profesionales de software usan en su día a día, mezclando la tecnología y la imaginación. La cuestión es que esta lectura me despertó la curiosidad por buscar la diferencia y relación entre dos conceptos que se usan bastante en nuestra industria: Principio de diseño y Patrón de diseño.
En primer lugar, es importante aclarar que, independientemente del nivel donde se apliquen (a nivel de funciones y clases, a nivel de componentes o a nivel arquitectónico), tanto los principios como patrones de diseño tienen un fin en común: Construir software flexible, mantenible y reusable. Visto desde otro ángulo, evitar un mal diseño caracterizado por:
- Rigidez: Es difícil de cambiar porque cada cambio afecta a demasiadas otras partes del sistema.
- Fragilidad: Cuando se hace un cambio, partes inesperadas del sistema se rompen.
- Inmovilidad: Es difícil reutilizarlo en otra aplicación porque no se puede desacoplar de la aplicación actual.
- Viscosidad: Es difícil hacer lo correcto pero fácil hacer lo incorrecto.
En segundo lugar, estos conceptos diferencian por lo siguiente:
- Principio de diseño: Conjunto de pautas que nos ayudan a evitar un mal diseño de software. Ejemplo: Open Close Principle.
- Patrón de diseño: Solución general reutilizable para un problema que ocurre comúnmente dentro de un contexto dado en el diseño de software. Ejemplo: Singleton.
Finalmente, si quieres diferenciar mejor estos conceptos metiendo las manos en la masa, es decir, escribiendo código, te recomiendo que revises el libro Beginning SOLID principles and Design Patterns for ASP.NET Developers que te enseña lo esencial para aplicar los principios y patrones de diseño en el contexto del diseño orientado a objetos, utilizando ASP.NET Core.
¡Gracias por llegar hasta aquí!
No comments:
Post a Comment