Code Smells y SOLIDA qué huele tu código?http://village.blogs.pressdemocrat.com/10315/recap-whos-ready-for-summer/?tc=ar
Comencemos!!http://lifesabusiness.files.wordpress.com/2011/05/lets-start.jpg?w=600&h=400
Porqué esnecesarioescribir unbuen código?
Desarrollo de Software Tradicionalhttp://www.flickr.com/photos/futureshape/4000128011/
Mucho softwareactual secomporta comoun juego de Jengahttp://www.albertelli.com/photoarchive/Random_2003/lawn_jenga0002.jpeg
Unpequeño                                                             cambio…http://amistadcuauti.files.wordpress.com/2008...
Provocaefectos por      todas   partes...http://design-crit.com/blog/images/jenga.jpg
Necesitamos un  cambio en el      sistema…  http://raulpiriz.files.wordpress.com/2010/09/alg_jefe.jpg
Produce  temor…http://blog.rwbenwick.com/wp-content/uploads/2009/12/Reason-For-Leaving-iStock_000008369823Medium.jpg
http://www.albertelli.com/photoarchive/Random_2003/lawn_jenga0002.jpeg
Pasamos más                                                                                     tiempo                    ...
Costo de poseer código “No Mantenible”
Ellos podrán ayudarnos?
Ustedes!!http://www.catosplace.net/blogs/personal/wp-content/uploads/2011/04/developers.jpg
Actitud                  http://www.flickr.com/photos/designd15/4220055968/in/photostream/“Escribir código que entienda la...
Entonces, ¿Por                                                                              qué es                        ...
Fácil de EntenderFácil de Cambiar      Barato de Mantener
Cómo detectarDónde puedo       si lo estoyencontrar la      haciendo mal?información quenecesito?                  Qué pue...
y muchos más…
Code SmellsCómo detectar uncódigo mal oliente?
Qué son los Code Smells?     Son todos los síntomas quepodemos encontrar en el código       fuente de un sistema queindica...
Rigidez          http://www.naturecabins.com/solar/images_600x400/20080525_steel_beam_closeup.JPG
Rigidez es la tendencia que  posee el software a ser difícil de cambiar, incluso    en formas sencillas o     cambios míni...
Fragilidadhttp://www.flickr.com/photos/tsvadivel/4780317627/
Fragilidad es la tendencia que posee un programapara romperse en muchoslugares cuando un simple   cambio es realizado.
Inamovilidadhttp://4.bp.blogspot.com/_b5RFglsqS4k/Rm2_uGVsxuI/AAAAAAAACfY/CkpR-E0HsV0/s400/sumo.jpg
Inamovilidad es la dificultad de separar elsistema en componentes      que pueden ser   reutilizados en otros         sist...
http://photos.runic.com/photos/syrup1.jpgViscosidad
Viscosidad se presenta cuando hacer las cosasincorrectamente es más  fácil que hacerlas del     modo correcto.
Ambiente de desarrollo lento eineficienteTiempos muy largos de compilaciónSubir el código toma horasHacer el deploy toma v...
Complejidad                                                                      innecesariahttp://www.funglode.org/Portal...
Complejidad innecesariaexiste cuando hay muchos      elementos queactualmente no son útiles.
Repetición                                                                          innecesariahttp://www.fondospantallagr...
Repetición innecesaria es cuando el código poseeestructuras repetidas quepueden ser unificadas bajo  una sola abstracción.
Opacidadhttp://img.fotocommunity.com/photos/11575434.jpg
Opacidad es la tendenciaque posee un módulo a ser     difícil de leer y      comprender.
http://fotos0.mundofotos.net/2008/19_11_2008/nostalgica1227105482/perrito-oliendo-flores.jpgA qué huele tu código?
Un buen                                                                             desarrollador                         ...
http://www.shrink4men.com/wp-content/uploads/2010/12/pointing-finger.jpgSi Usted posee…
Código ilegiblehttp://3.bp.blogspot.com/_-XV87BeCV9Y/SwLqj5UzO8I/AAAAAAAAA4g/hzaxblNx1jw/s1600/IMG_2385.JPG
Código duplicadohttp://www.matrix-explained.com/photopost/data/512/39100hugo3.jpg
Métodos muy Laaaargos!!http://1.bp.blogspot.com/-VqyZkA5M2eU/T35ixp0dD_I/AAAAAAAAAN4/pppIVZSeHbQ/s1600/548383_393176807378...
Clases muy                       grandeshttp://cache2.allpostersimages.com/p/LRG/21/2163/18ACD00Z/posters/miller-john-huge...
http://www.zonelibere.net/images/stories/zenstones.jpg                                                         Refactorizar
http://4.bp.blogspot.com/-RhAnCDMlvts/Tptjf9pQcZI/AAAAAAAAAUU/lJSYMataDOM/s1600/mecanismo-reloj.jpgCambiar la estructura i...
http://4.bp.blogspot.com/-RhAnCDMlvts/Tptjf9pQcZI/AAAAAAAAAUU/lJSYMataDOM/s1600/mecanismo-reloj.jpgSin alterar su comporta...
Obtener un código más          simple.  La refactorización enseñatécnicas para descubrir código  de mala calidad y técnica...
http://theicebergfestival.ca/wp-content/gallery/iceberg-photos-2009/iceberg2.jpgS.O.L.I.D
Single Responsibility PrincipleOpen / Close PrincipleLiskov Substitution PrincipleInterface Segregation PrincipleDependenc...
Bueno, manos a la obra!!
Single Responsibility Principle                      “Cada objeto debe tener                        una responsabilidad   ...
Open / Close Principle               “Una clase debe              estar abierta para                extensión pero        ...
Liskov Substitution Principle  “Las clases derivadas deben ser  sustituidas por sus clases base”
Interface Segregation Principle                  “Mantenga interfaces                    finas a un nivel de              ...
Dependency Inversion Principle                     “Clases de alto nivel                     no deben depender            ...
SOLID haceque tu código   huela bien
Gracias!           @JohnnyOrdonez
Referencias • Clean Code: A Handbook of Agile Software Craftsmanship,   Robert C. Martin (Aug 11, 2008) http://www.amazon....
Referencias • A Taxonomy for "Bad Code Smells ", Mika Mäntylä (2010)   http://www.soberit.hut.fi/mmantyla/BadCodeSmellsTax...
Más Code       Smells y Tips     para corregirlos                                                                         ...
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Code Smells y SOLID: A qué huele tu código?
Próxima SlideShare
Cargando en…5
×

Code Smells y SOLID: A qué huele tu código?

2.467 visualizaciones

Publicado el

A qué huele tu código? Cómo detectar olores en mi código?

Una mirada hacia las buenas prácticas de programación y la forma de detectar y corregir problemas frecuentes para de esta forma crear un código de calidad aplicando los principios SOLID.

Publicado en: Tecnología
1 comentario
12 recomendaciones
Estadísticas
Notas
Sin descargas
Visualizaciones
Visualizaciones totales
2.467
En SlideShare
0
De insertados
0
Número de insertados
9
Acciones
Compartido
0
Descargas
69
Comentarios
1
Recomendaciones
12
Insertados 0
No insertados

No hay notas en la diapositiva.

Code Smells y SOLID: A qué huele tu código?

  1. 1. Code Smells y SOLIDA qué huele tu código?http://village.blogs.pressdemocrat.com/10315/recap-whos-ready-for-summer/?tc=ar
  2. 2. Comencemos!!http://lifesabusiness.files.wordpress.com/2011/05/lets-start.jpg?w=600&h=400
  3. 3. Porqué esnecesarioescribir unbuen código?
  4. 4. Desarrollo de Software Tradicionalhttp://www.flickr.com/photos/futureshape/4000128011/
  5. 5. Mucho softwareactual secomporta comoun juego de Jengahttp://www.albertelli.com/photoarchive/Random_2003/lawn_jenga0002.jpeg
  6. 6. Unpequeño cambio…http://amistadcuauti.files.wordpress.com/2008/08/jenga.jpg
  7. 7. Provocaefectos por todas partes...http://design-crit.com/blog/images/jenga.jpg
  8. 8. Necesitamos un cambio en el sistema… http://raulpiriz.files.wordpress.com/2010/09/alg_jefe.jpg
  9. 9. Produce temor…http://blog.rwbenwick.com/wp-content/uploads/2009/12/Reason-For-Leaving-iStock_000008369823Medium.jpg
  10. 10. http://www.albertelli.com/photoarchive/Random_2003/lawn_jenga0002.jpeg
  11. 11. Pasamos más tiempo leyendo código que escribiéndolohttp://photos.pcpro.co.uk/blogs/wp-content/uploads/2010/10/frustrated.jpg
  12. 12. Costo de poseer código “No Mantenible”
  13. 13. Ellos podrán ayudarnos?
  14. 14. Ustedes!!http://www.catosplace.net/blogs/personal/wp-content/uploads/2011/04/developers.jpg
  15. 15. Actitud http://www.flickr.com/photos/designd15/4220055968/in/photostream/“Escribir código que entienda la computadora es unatécnica; escribir código que entienda un ser humano es un Arte” – Robert ‘Uncle Bob’ Martin
  16. 16. Entonces, ¿Por qué es importante escribir mejor código?http://www.websoftwareqa.com/wp-content/uploads/2010/07/Computer-Code.jpg
  17. 17. Fácil de EntenderFácil de Cambiar Barato de Mantener
  18. 18. Cómo detectarDónde puedo si lo estoyencontrar la haciendo mal?información quenecesito? Qué puedo aplicar y quéQué patrones no?resuelven esteproblema?
  19. 19. y muchos más…
  20. 20. Code SmellsCómo detectar uncódigo mal oliente?
  21. 21. Qué son los Code Smells? Son todos los síntomas quepodemos encontrar en el código fuente de un sistema queindican que muy probablemente existan problemas más profundos de calidad de código, de diseño o de ambos.
  22. 22. Rigidez http://www.naturecabins.com/solar/images_600x400/20080525_steel_beam_closeup.JPG
  23. 23. Rigidez es la tendencia que posee el software a ser difícil de cambiar, incluso en formas sencillas o cambios mínimos.
  24. 24. Fragilidadhttp://www.flickr.com/photos/tsvadivel/4780317627/
  25. 25. Fragilidad es la tendencia que posee un programapara romperse en muchoslugares cuando un simple cambio es realizado.
  26. 26. Inamovilidadhttp://4.bp.blogspot.com/_b5RFglsqS4k/Rm2_uGVsxuI/AAAAAAAACfY/CkpR-E0HsV0/s400/sumo.jpg
  27. 27. Inamovilidad es la dificultad de separar elsistema en componentes que pueden ser reutilizados en otros sistemas.
  28. 28. http://photos.runic.com/photos/syrup1.jpgViscosidad
  29. 29. Viscosidad se presenta cuando hacer las cosasincorrectamente es más fácil que hacerlas del modo correcto.
  30. 30. Ambiente de desarrollo lento eineficienteTiempos muy largos de compilaciónSubir el código toma horasHacer el deploy toma variosminutos
  31. 31. Complejidad innecesariahttp://www.funglode.org/Portals/0/images/Sala_de_Prensa/2010/Marzo/Complejidad%20interior.jpg
  32. 32. Complejidad innecesariaexiste cuando hay muchos elementos queactualmente no son útiles.
  33. 33. Repetición innecesariahttp://www.fondospantallagratis.com/wp-content/uploads/2009/03/fichas_de_domino.jpg
  34. 34. Repetición innecesaria es cuando el código poseeestructuras repetidas quepueden ser unificadas bajo una sola abstracción.
  35. 35. Opacidadhttp://img.fotocommunity.com/photos/11575434.jpg
  36. 36. Opacidad es la tendenciaque posee un módulo a ser difícil de leer y comprender.
  37. 37. http://fotos0.mundofotos.net/2008/19_11_2008/nostalgica1227105482/perrito-oliendo-flores.jpgA qué huele tu código?
  38. 38. Un buen desarrollador tiene un olfato finohttp://vinos.viaresto.com.ar/sites/default/files/Foto-aroma.jpg?1308074199
  39. 39. http://www.shrink4men.com/wp-content/uploads/2010/12/pointing-finger.jpgSi Usted posee…
  40. 40. Código ilegiblehttp://3.bp.blogspot.com/_-XV87BeCV9Y/SwLqj5UzO8I/AAAAAAAAA4g/hzaxblNx1jw/s1600/IMG_2385.JPG
  41. 41. Código duplicadohttp://www.matrix-explained.com/photopost/data/512/39100hugo3.jpg
  42. 42. Métodos muy Laaaargos!!http://1.bp.blogspot.com/-VqyZkA5M2eU/T35ixp0dD_I/AAAAAAAAAN4/pppIVZSeHbQ/s1600/548383_393176807378912_329870347042892_1399267_792609564_n.jpg
  43. 43. Clases muy grandeshttp://cache2.allpostersimages.com/p/LRG/21/2163/18ACD00Z/posters/miller-john-huge-tyres-big-foot-customised-car-usa.jpg
  44. 44. http://www.zonelibere.net/images/stories/zenstones.jpg Refactorizar
  45. 45. http://4.bp.blogspot.com/-RhAnCDMlvts/Tptjf9pQcZI/AAAAAAAAAUU/lJSYMataDOM/s1600/mecanismo-reloj.jpgCambiar la estructura interna delcódigo…
  46. 46. http://4.bp.blogspot.com/-RhAnCDMlvts/Tptjf9pQcZI/AAAAAAAAAUU/lJSYMataDOM/s1600/mecanismo-reloj.jpgSin alterar su comportamiento visible… Cambiar la estructura interna…http://img.alibaba.com/wsphoto/v0/390462787/6pcs-lot-free-shipping-2011-new-arrival-vintage-pocket-watch-necklaces.jpg
  47. 47. Obtener un código más simple. La refactorización enseñatécnicas para descubrir código de mala calidad y técnicas para cambiarlo.
  48. 48. http://theicebergfestival.ca/wp-content/gallery/iceberg-photos-2009/iceberg2.jpgS.O.L.I.D
  49. 49. Single Responsibility PrincipleOpen / Close PrincipleLiskov Substitution PrincipleInterface Segregation PrincipleDependency Inversion Principle
  50. 50. Bueno, manos a la obra!!
  51. 51. Single Responsibility Principle “Cada objeto debe tener una responsabilidad única, y esta responsabilidad debe estar completamente encapsulada dentro de la clase” “Las clases deben tener una única responsabilidad, una única razón de cambio”
  52. 52. Open / Close Principle “Una clase debe estar abierta para extensión pero cerrada para modificación”
  53. 53. Liskov Substitution Principle “Las clases derivadas deben ser sustituidas por sus clases base”
  54. 54. Interface Segregation Principle “Mantenga interfaces finas a un nivel de granularidad que el cliente necesita. Los clientes no deben ser forzados a depender de interfaces que no utilizan.”
  55. 55. Dependency Inversion Principle “Clases de alto nivel no deben depender de clases de bajo nivel. Ambas deben depender de sus abstracciones” “Dependa de abstracciones, no de objetos concretos”
  56. 56. SOLID haceque tu código huela bien
  57. 57. Gracias! @JohnnyOrdonez
  58. 58. Referencias • Clean Code: A Handbook of Agile Software Craftsmanship, Robert C. Martin (Aug 11, 2008) http://www.amazon.com/Clean-Code- Handbook-Software-Craftsmanship/dp/0132350882 • Agile Software Development, Principles, Patterns, and Practices, Robert C. Martin (Oct 25, 2002) http://www.amazon.com/Software- Development-Principles-Patterns-Practices/dp/0135974445 • Code Smells, Louhekon (2010) http://www.louhekon.fi/2010/02/code- smells/ • A Taxonomy for "Bad Code Smells ", Mika Mäntylä (2010) http://www.soberit.hut.fi/mmantyla/BadCodeSmellsTaxonomy.htm
  59. 59. Referencias • A Taxonomy for "Bad Code Smells ", Mika Mäntylä (2010) http://www.soberit.hut.fi/mmantyla/BadCodeSmellsTaxonomy.htm • SOLID Software Design, AbbasRaza (2012) http://www.slideshare.net/theceo/solid-software-design • SOLID OO Principles, Andreas Enbohm (2011) http://www.slideshare.net/enbohm/solid-design-principles-9016117 • The SOLID Principles in C#, Leon van Bokhorst (2012) http://www.remondo.net/solid-principles-csharp-single-responsibility/ • A qué huele tu código?, Rubén Bernárdez (2011) http://www.slideshare.net/rubenbp/a-qu-huele-tu-cdigo-afinando-nuestro- olfato-7400175
  60. 60. Más Code Smells y Tips para corregirlos Tomado de:http://www.slideshare.net/rubenbp/a-qu-huele-tu-cdigo-afinando-nuestro-olfato-7400175

×