Patrones de diseño: buenos o malos?

  • RSS
  • Add To My MSN
  • Add To Windows Live
  • Add To My Yahoo
  • Add To Google
Posted by Hernan Guzmán Wednesday, August 24, 2011 10:35:00 PM Categories: Diseño de software

Hace un tiempo he leído variado artículo y discutido con varias personas sobre este tema, uno de los cuales me apasiona bastante recientemente.

Resumiendo los puntos de vista a favor, se puede destacar lo siguiente:

  • Los patrones de diseño son una recopilación de buenas prácticas para resolver problemas de diseño comunes o recurrentes.
  • Hasta el programador más novato hace uso implícito de patrones, como mínimo usando las implementaciones que pueden ofrecer los frameworks para diferentes funcionalidades. Por ejemplo, el patrón Iterator para recorrer una colección.
  • Los patrones de dseño se han vuelto un pilar del desarrollo de software. La mejor muestra de ello es el catálogo de Gang of Four, el cual después de muchos años aún es vigente y la mayoría de sus patrones siguen siendo modelo a seguir (ojo, no todos!).

Por el contrario, desde otro punto de vista se puede decir lo siguiente:

  • En ocasiones los patrones de diseño introducen complejidad innecesaria en un sistema, al tratar de especular sobre flexibilidad a futuro que puede que nunca se vaya a necesitar, haciendo mas complicada asi la labor de mantenimiento de un  sistema.
  • Un patrón de diseño usado por personas poco experimentadas puede traducirse en un desastre de software.
  • Hay patrones de diseño que introducen más problemas de los que resuelven, un ejemplo de ellos es el Singleton

En terminos generales, la conclusión es que a la hora de diseñar una solución se debe pensar primero, analizar la problemática, evaluar las alternativas de solución posibles, y mantener siempre presentes los principios de un buen diseño: simplicidad, alta cohesión, bajo acoplamiento, y tomar decisiones basados en experiencias.

Usted qué opina?

Comments

Thursday, August 25, 2011 7:15:27 AM

re: Patrones de diseño: buenos o malos?

En mi concepto todos los patrones de diseño son buenos, porque si un patrón de diseño no es bueno pues sería un antipatrón, realmente lo malo se da es cuando no se emplean bien, una vez leía en un blog donde el autor confesaba que después de haber leído el libro Design Patters(GoF) en su siguiente proyecto había aplicado todos los patrones de ese libro y creo que ese es uno de nuestros problemas, ya que cuando aprendemos algo nuevo queremos aplicarlo de inmediato sin realmente analizar si verdaderamente aplica o es necesario, los patrones son una herramienta útil y necesaria de la ingeniería, pero como toda herramienta cada patrón tiene también un fin especifico. Muy bien por el post.

Thursday, August 25, 2011 10:36:32 AM

re: Patrones de diseño: buenos o malos?

Ehudes, al decir que un patrón no es bueno no necesariamente quiere decir que sea un antipatrón, lo que pasa es que, compartiendo un poco puntos de vista de autores, hay patrones que a decir verdad el día de hoy no aportan tanto como pudo haber sido en su época de origen (uno muy criticado hoy en día es el singleton).

Por eso es que como se dice, hay que evaluar siempre muy bien las alternativas. Gracias por el comentario!

Thursday, August 25, 2011 10:58:44 AM
German David Ruiz F

re: Patrones de diseño: buenos o malos?

En los patrones de diseño son como todo, una simple herramienta, lo realmente importante es saber como y cuando utilizarlos, de lo contrario pueden traer mas problemas que beneficios.

Thursday, August 25, 2011 11:39:49 AM

re: Patrones de diseño: buenos o malos?

pienso igual que german , creo eso depende del uso que se le den , son solo herramientas , para hacer una analogía es como si un carpintero no usara de manera adecuada su sierra , seguro el resultado no sera el mejor

Thursday, August 25, 2011 12:10:41 PM

re: Patrones de diseño: buenos o malos?

El post  publiqué puede complementar la discusión tan interesante que ha planteado este post.

Thursday, August 25, 2011 5:23:39 PM

re: Patrones de diseño: buenos o malos?

Completamente de acuerdo con que los patrones son absolutamente necesarios a la hora de desarrollar un sistema complejo, son buenas practicas y en general es mas lo que aportan que lo afectan. Completamente de acuerdo en que el problema es no saber aplicarlos es cuando tienes cientos de lios y suele suceder mucho, ya que los patrones son mas conceptuales que practicos y de buen entendimiento es donde viene la buena implementación. Una cosa es una clase, otra cosas es el paradigma de la OOP y otra cosa son los patrones. Cuantos se creen programadores Orientados Objetos por que solo hacen clases y no les ves ninguna implementación a traves de interfaces por ejemplo. Estudiar los patrones es mas que necesario...

Thursday, August 25, 2011 8:35:35 PM
Oscar Rendón

re: Patrones de diseño: buenos o malos?

De acuerdo con todos ustedes, unificar problemas/soluciones bajo un marco comun y que pueda ser reutilizado y adaptado a tu dominio especifico, ha sido un avance magnifico! De ahi que no solo tengamos patrones de diseño sino tambien patrones de arquitectura, principios, frameworks, practicas, etc...

A los puntos de vista a favor, le agregaría que nos otorgan un lenguaje comun a los desarrolladores, lo cual nos hace mas efectivos a la hora de comunicarnos y resolver problemas. Antes de los patrones seguramente hubiera sido un pelin mas complicado explicarle a otro desarrollador que la capa de datos vamos a usar x ejm un Factory + DAO y que el lo entendiera enseguida!

Muy bien x el post Hernan!

Friday, August 26, 2011 7:05:18 PM
pablo andrés

re: Patrones de diseño: buenos o malos?

los patrones en términos generales son buenos. un buen programador debe conocerlos, así como cualquier experto en una materia conoce formas probadas de resolver problemas. lo malo comienza cuando se aplica el patrón "Golden Hammer", cuyo enunciado es "al que tiene un cincel en la mano todo le parece piedra".

claro que ese problema no es único de los patrones ni es nuevo...

hace muchos años aprendí de memoria el ordenamiento burbuja y usé mucho tiempo ese tipo de ordenamiento para finalmente entender que es ineficiente. en otra oportunidad escribí una clase para representar bit-a-bit una matriz de adyacencia y terminé haciendo un código que en memoria era más grande que si hubiera trabajado un simple arreglo de enteros.

somos gomosos y tercos, hoy que soy analista de sistemas y ya casi no programo, trabajo con gente que por aplicar los patrones resulta haciendo monstruosidades, pienso que a la larga, el único patron que amerita saber de memoria y aplicar en todo momento es el patrón KISS "keep it simple, stupid".

 
© 2009 - 2013 Avanet