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

2,033 views

Published on

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.

Published in: Technology
1 Comment
10 Likes
Statistics
Notes
No Downloads
Views
Total views
2,033
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
58
Comments
1
Likes
10
Embeds 0
No embeds

No notes for slide

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

×