El sábado pasado participé como ponente en una VAN (reunión virtual) de AltNetHispano sobre principios SOLID (uno de los temas que más me gusta de esta profesión). Aquí podrán encontrar el listado completo de videos de VANs o verla directamente aquí:
Presentación: aquí. Código antes de aplicar los refactorings: aquí.
Les dejo el video gentilmente editado por la gente de AltNetHispano, si quieren un adelanto, lean el resumen que dejo abajo.
Quiero compartir en este post es un breve resumen sobre los temas que surgieron como preguntas y las repercusiones con el fin de que sirva de guia para aquel que quiera ver el video de 2 horas y algo más.
Mostré 3 o 4 ejemplos de código real de alguno de mis proyectos o extractado de algún caso real de clientes de consultoría.
En el primer ejemplo transformamos una clase que violaba claramente el principio de responsabilidad única. Separamos el código en dos clases. Luego avanzamos un poco más sobre el caso analizando una violación al principio de inversión de la dependencia y también codificamos una solución.
En el segundo ejemplo tomamos como base una consulta hecha por Edgar Ramos la lista de AltNetHispano, en el que planteaba un problema que me pareció muy útil para demostrar el principio abierto-cerrado.
El tercer ejemplo vimos el principio de segregación de interfaces. Presenté una refactorización del patrón repositorio separándolo en un repositorio básico basado en generics y uno o más Enhanced Query Objects del gran @fabiomaulo (el gran ausente de la VAN, el pobre estaba sin PC, parece).
Hablando sobre el ejemplo anterior conté una anécdota sobre un reemplazo de repositorios que tuvimos que encarar (desde IBatis.NET a NHibernate) y nos costó bastante por estar en clara violación del principio de sustitucion de Liskov.
El cuarto ejemplo fue una respuesta a la consulta de un colega sobre un procesador de archivos basado en reglas que fuera configurable. Propuse una solución basada en interfaces y Windsor como container de inyección de dependencias.
Tanto durante la VAN como en twitter (aquí y aquí) surgieron comentarios interesantes y preguntas (ver repercusión aquí). Sobre todo esto trataré de escribir posts ampliando mis respuestas.
Por último los comentarios que me llenan de orgullo (aquí, aquí y aquí) puesto que vienen de mis colegas, a los cuales también respeto mucho.
Si lo desean pueden descargar la presentación y la
Referencias:
[1] http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
[2] http://en.wikipedia.org/wiki/Solid_(object-oriented_design)
[3] http://www.lostechies.com/blogs/chad_myers/archive/2008/03/07/pablo-s-topic-of-the-month-march-solid-principles.aspx
[4] http://blogs.msdn.com/b/cdndevs/archive/2009/07/15/the-solid-principles-explained-with-motivational-posters.aspx
[5] http://cdn.cloudfiles.mosso.com/c82752/pablos_solid_ebook.pdf
[6] http://www.hanselminutes.com/default.aspx?showID=163
Gracias a todos.
Gracias a ti Carlos, es bueno para nuestra comunidad ALT.NET Hispano contar con prefesionales como tu, listos a compartir lo mucho que saben.
Pingback: Tweets that mention VAN sobre principios SOLID en AltNetHispano | Carlos Peix -- Topsy.com
Sin duda una excelente presentación hay que dar las gracias a Carlos y a la comunidad ALT.NET Hispano por dar estas VAN y así mejorar la manera de como estamos programando.
Ya estoy compartiendo el link de la reunión con los compañeros del trabajo y los noto muy interesados en el tema.
También me acabo de dar cuenta que no están los links a los códigos de Ejemplos.
Hola Lester,
Muchas gracias. Cuanto mas compartamos este material, mejor.
Yo soy el primero en agradecer a la comunidad y a Jorge Gamba, nuestro “metrónomo”, sin el cual hubiésemos quedado por la cuarta VAN.
Con respecto al código fuente, tenemos un problema, tengo la versión resultante luego de haberla tocado durante la VAN y, lo que realmente tiene valor, es haber visto el proceso.
De todas maneras voy a subirlo aquí mismo tal como esta ahora en caso de que sea de utilidad a alguien.
Gracias de nuevo.
Es cierto tienes toda la razón
.