Code Smells y SOLID: A qué huele tu código?
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

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

  • 1,183 views
Uploaded on

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

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.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
1,183
On Slideshare
1,178
From Embeds
5
Number of Embeds
2

Actions

Shares
Downloads
19
Comments
1
Likes
3

Embeds 5

http://www.linkedin.com 3
https://twitter.com 2

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Code Smells y SOLIDA qué huele tu código?http://village.blogs.pressdemocrat.com/10315/recap-whos-ready-for-summer/?tc=ar
  • 2. Comencemos!!http://lifesabusiness.files.wordpress.com/2011/05/lets-start.jpg?w=600&h=400
  • 3. Porqué esnecesarioescribir unbuen código?
  • 4. Desarrollo de Software Tradicionalhttp://www.flickr.com/photos/futureshape/4000128011/
  • 5. Mucho softwareactual secomporta comoun juego de Jengahttp://www.albertelli.com/photoarchive/Random_2003/lawn_jenga0002.jpeg
  • 6. Unpequeño cambio…http://amistadcuauti.files.wordpress.com/2008/08/jenga.jpg
  • 7. Provocaefectos por todas partes...http://design-crit.com/blog/images/jenga.jpg
  • 8. Necesitamos un cambio en el sistema… http://raulpiriz.files.wordpress.com/2010/09/alg_jefe.jpg
  • 9. Produce temor…http://blog.rwbenwick.com/wp-content/uploads/2009/12/Reason-For-Leaving-iStock_000008369823Medium.jpg
  • 10. http://www.albertelli.com/photoarchive/Random_2003/lawn_jenga0002.jpeg
  • 11. Pasamos más tiempo leyendo código que escribiéndolohttp://photos.pcpro.co.uk/blogs/wp-content/uploads/2010/10/frustrated.jpg
  • 12. Costo de poseer código “No Mantenible”
  • 13. Ellos podrán ayudarnos?
  • 14. Ustedes!!http://www.catosplace.net/blogs/personal/wp-content/uploads/2011/04/developers.jpg
  • 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. Entonces, ¿Por qué es importante escribir mejor código?http://www.websoftwareqa.com/wp-content/uploads/2010/07/Computer-Code.jpg
  • 17. Fácil de EntenderFácil de Cambiar Barato de Mantener
  • 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. y muchos más…
  • 20. Code SmellsCómo detectar uncódigo mal oliente?
  • 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. Rigidez http://www.naturecabins.com/solar/images_600x400/20080525_steel_beam_closeup.JPG
  • 23. Rigidez es la tendencia que posee el software a ser difícil de cambiar, incluso en formas sencillas o cambios mínimos.
  • 24. Fragilidadhttp://www.flickr.com/photos/tsvadivel/4780317627/
  • 25. Fragilidad es la tendencia que posee un programapara romperse en muchoslugares cuando un simple cambio es realizado.
  • 26. Inamovilidadhttp://4.bp.blogspot.com/_b5RFglsqS4k/Rm2_uGVsxuI/AAAAAAAACfY/CkpR-E0HsV0/s400/sumo.jpg
  • 27. Inamovilidad es la dificultad de separar elsistema en componentes que pueden ser reutilizados en otros sistemas.
  • 28. http://photos.runic.com/photos/syrup1.jpgViscosidad
  • 29. Viscosidad se presenta cuando hacer las cosasincorrectamente es más fácil que hacerlas del modo correcto.
  • 30. Ambiente de desarrollo lento eineficienteTiempos muy largos de compilaciónSubir el código toma horasHacer el deploy toma variosminutos
  • 31. Complejidad innecesariahttp://www.funglode.org/Portals/0/images/Sala_de_Prensa/2010/Marzo/Complejidad%20interior.jpg
  • 32. Complejidad innecesariaexiste cuando hay muchos elementos queactualmente no son útiles.
  • 33. Repetición innecesariahttp://www.fondospantallagratis.com/wp-content/uploads/2009/03/fichas_de_domino.jpg
  • 34. Repetición innecesaria es cuando el código poseeestructuras repetidas quepueden ser unificadas bajo una sola abstracción.
  • 35. Opacidadhttp://img.fotocommunity.com/photos/11575434.jpg
  • 36. Opacidad es la tendenciaque posee un módulo a ser difícil de leer y comprender.
  • 37. http://fotos0.mundofotos.net/2008/19_11_2008/nostalgica1227105482/perrito-oliendo-flores.jpgA qué huele tu código?
  • 38. Un buen desarrollador tiene un olfato finohttp://vinos.viaresto.com.ar/sites/default/files/Foto-aroma.jpg?1308074199
  • 39. http://www.shrink4men.com/wp-content/uploads/2010/12/pointing-finger.jpgSi Usted posee…
  • 40. Código ilegiblehttp://3.bp.blogspot.com/_-XV87BeCV9Y/SwLqj5UzO8I/AAAAAAAAA4g/hzaxblNx1jw/s1600/IMG_2385.JPG
  • 41. Código duplicadohttp://www.matrix-explained.com/photopost/data/512/39100hugo3.jpg
  • 42. Métodos muy Laaaargos!!http://1.bp.blogspot.com/-VqyZkA5M2eU/T35ixp0dD_I/AAAAAAAAAN4/pppIVZSeHbQ/s1600/548383_393176807378912_329870347042892_1399267_792609564_n.jpg
  • 43. Clases muy grandeshttp://cache2.allpostersimages.com/p/LRG/21/2163/18ACD00Z/posters/miller-john-huge-tyres-big-foot-customised-car-usa.jpg
  • 44. http://www.zonelibere.net/images/stories/zenstones.jpg Refactorizar
  • 45. http://4.bp.blogspot.com/-RhAnCDMlvts/Tptjf9pQcZI/AAAAAAAAAUU/lJSYMataDOM/s1600/mecanismo-reloj.jpgCambiar la estructura interna delcódigo…
  • 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. 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. http://theicebergfestival.ca/wp-content/gallery/iceberg-photos-2009/iceberg2.jpgS.O.L.I.D
  • 49. Single Responsibility PrincipleOpen / Close PrincipleLiskov Substitution PrincipleInterface Segregation PrincipleDependency Inversion Principle
  • 50. Bueno, manos a la obra!!
  • 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. Open / Close Principle “Una clase debe estar abierta para extensión pero cerrada para modificación”
  • 53. Liskov Substitution Principle “Las clases derivadas deben ser sustituidas por sus clases base”
  • 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. 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. SOLID haceque tu código huela bien
  • 57. Gracias! @JohnnyOrdonez
  • 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. 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. Más Code Smells y Tips para corregirlos Tomado de:http://www.slideshare.net/rubenbp/a-qu-huele-tu-cdigo-afinando-nuestro-olfato-7400175