code smells y solid: a qué huele tu código?

82
A qué huele tu código? Code Smells y SOLID http://village.blogs.pressdemocrat.com/10315/recap-whos-ready-for-summer/?tc=ar

Upload: johnny-ordonez

Post on 05-Dec-2014

1.224 views

Category:

Technology


3 download

DESCRIPTION

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.

TRANSCRIPT

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

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

http://village.blogs.pressdemocrat.com/10315/recap-whos-ready-for-summer/?tc=ar

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

Comencemos!!

http://lifesabusiness.files.wordpress.com/2011/05/lets-start.jpg?w=600&h=400

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

Porqué es

necesario

escribir un

buen código?

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

http://www.flickr.com/photos/futureshape/4000128011/

Desarrollo de Software Tradicional

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

http://www.albertelli.com/photoarchive/Random_2003/lawn_jenga0002.jpeg

Mucho software actual se comporta como un juego de Jenga

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

Un pequeño

cambio…

http://amistadcuauti.files.wordpress.com/2008/08/jenga.jpg

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

http://design-crit.com/blog/images/jenga.jpg

Provocaefectos por

todaspartes...

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

Necesitamos un cambio en el

sistema…

http://raulpiriz.files.wordpress.com/2010/09/alg_jefe.jpg

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

http://blog.rwbenwick.com/wp-content/uploads/2009/12/Reason-For-Leaving-iStock_000008369823Medium.jpg

Produce temor…

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

http://www.albertelli.com/photoarchive/Random_2003/lawn_jenga0002.jpeg

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

http://photos.pcpro.co.uk/blogs/wp-content/uploads/2010/10/frustrated.jpg

Pasamos más tiempo

leyendo código que

escribiéndolo

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

Costo de poseer código “No Mantenible”

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

Ellos podrán ayudarnos?

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

http://www.catosplace.net/blogs/personal/wp-content/uploads/2011/04/developers.jpg

Ustedes!!

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

“Escribir código que entienda la computadora es una técnica; escribir código que entienda un ser humano

es un Arte” – Robert ‘Uncle Bob’ Martin

Actitud http://www.flickr.com/photos/designd15/4220055968/in/photostream/

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

Entonces, ¿Por qué es

importante escribir mejor

código?

http://www.websoftwareqa.com/wp-content/uploads/2010/07/Computer-Code.jpg

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

Fácil de Entender

Fácil de Cambiar

Barato de Mantener

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

Dónde puedo encontrar la información que necesito?

Cómo detectar si lo estoy haciendo mal?

Qué patrones resuelven este problema?

Qué puedo aplicar y qué no?

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

y muchos más…

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

Cómo detectar un código mal oliente?

Code Smells

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

Qué son los Code Smells?

Son todos los síntomas que podemos encontrar en el código

fuente de un sistema que indican que muy probablemente

existan problemas más profundos de calidad de código,

de diseño o de ambos.

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

Rigidez

http://www.naturecabins.com/solar/images_600x400/20080525_steel_beam_closeup.JPG

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

Rigidez es la tendencia que posee el software a ser

difícil de cambiar, incluso en formas sencillas o

cambios mínimos.

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

Fragilidad

http://www.flickr.com/photos/tsvadivel/4780317627/

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

Fragilidad es la tendencia que posee un programa

para romperse en muchos lugares cuando un simple

cambio es realizado.

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

Inamovilidad

http://4.bp.blogspot.com/_b5RFglsqS4k/Rm2_uGVsxuI/AAAAAAAACfY/CkpR-E0HsV0/s400/sumo.jpg

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

Inamovilidad es la dificultad de separar el

sistema en componentes que pueden ser

reutilizados en otros sistemas.

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

Viscosidad

http://photos.runic.com/photos/syrup1.jpg

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

Viscosidad se presenta cuando hacer las cosas

incorrectamente es más fácil que hacerlas del

modo correcto.

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

Ambiente de desarrollo lento e ineficiente

Tiempos muy largos de compilación

Subir el código toma horas

Hacer el deploy toma varios minutos

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

Complejidad innecesaria

http://www.funglode.org/Portals/0/images/Sala_de_Prensa/2010/Marzo/Complejidad%20interior.jpg

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

Complejidad innecesaria existe cuando hay muchos

elementos que actualmente no son útiles.

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

http://www.fondospantallagratis.com/wp-content/uploads/2009/03/fichas_de_domino.jpg

Repetición innecesaria

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

Repetición innecesaria es cuando el código posee

estructuras repetidas que pueden ser unificadas bajo

una sola abstracción.

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

http://img.fotocommunity.com/photos/11575434.jpg

Opacidad

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

Opacidad es la tendencia que posee un módulo a ser

difícil de leer y comprender.

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

A qué huele tu código?

http://fotos0.mundofotos.net/2008/19_11_2008/nostalgica1227105482/perrito-oliendo-flores.jpg

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

Un buen desarrollador

tiene un olfato fino

http://vinos.viaresto.com.ar/sites/default/files/Foto-aroma.jpg?1308074199

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

Si Usted posee…

http://www.shrink4men.com/wp-content/uploads/2010/12/pointing-finger.jpg

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

Código ilegible

http://3.bp.blogspot.com/_-XV87BeCV9Y/SwLqj5UzO8I/AAAAAAAAA4g/hzaxblNx1jw/s1600/IMG_2385.JPG

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

Código duplicado

http://www.matrix-explained.com/photopost/data/512/39100hugo3.jpg

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

Métodos muy Laaaargos!!

http://1.bp.blogspot.com/-VqyZkA5M2eU/T35ixp0dD_I/AAAAAAAAAN4/pppIVZSeHbQ/s1600/548383_393176807378912_329870347042892_1399267_792609564_n.jpg

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

Clases muy grandes

http://cache2.allpostersimages.com/p/LRG/21/2163/18ACD00Z/posters/miller-john-huge-tyres-big-foot-customised-car-usa.jpg

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

Refactorizar

http://www.zonelibere.net/images/stories/zenstones.jpg

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

Cambiar la estructura interna del código…

http://4.bp.blogspot.com/-RhAnCDMlvts/Tptjf9pQcZI/AAAAAAAAAUU/lJSYMataDOM/s1600/mecanismo-reloj.jpg

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

Cambiar la estructura interna…

http://4.bp.blogspot.com/-RhAnCDMlvts/Tptjf9pQcZI/AAAAAAAAAUU/lJSYMataDOM/s1600/mecanismo-reloj.jpg

Sin alterar su comportamiento visible…

http://img.alibaba.com/wsphoto/v0/390462787/6pcs-lot-free-shipping-2011-new-arrival-vintage-pocket-watch-necklaces.jpg

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

Obtener un código más simple.

La refactorización enseña técnicas para descubrir código

de mala calidad y técnicas para cambiarlo.

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

S.O.L.I.D

http://theicebergfestival.ca/wp-content/gallery/iceberg-photos-2009/iceberg2.jpg

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

Single Responsibility Principle

Open / Close Principle

Liskov Substitution Principle

Interface Segregation Principle

Dependency Inversion Principle

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

Bueno, manos a la obra!!

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

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”

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

Open / Close Principle

“Una clase debe estar abierta para

extensión pero cerrada para

modificación”

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

Liskov Substitution Principle

“Las clases derivadas deben ser sustituidas por sus clases base”

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

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.”

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

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”

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

SOLID hace que tu código

huela bien

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

Gracias!

@JohnnyOrdonez

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

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

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

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

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

Más CodeSmells y Tips

para corregirlos

Tomado de:

http://www.slideshare.net/rubenbp/a-qu-huele-tu-cdigo-afinando-nuestro-olfato-7400175

Page 62: Code Smells y SOLID: A qué huele tu código?
Page 63: Code Smells y SOLID: A qué huele tu código?
Page 64: Code Smells y SOLID: A qué huele tu código?
Page 65: Code Smells y SOLID: A qué huele tu código?
Page 66: Code Smells y SOLID: A qué huele tu código?
Page 67: Code Smells y SOLID: A qué huele tu código?
Page 68: Code Smells y SOLID: A qué huele tu código?
Page 69: Code Smells y SOLID: A qué huele tu código?
Page 70: Code Smells y SOLID: A qué huele tu código?
Page 71: Code Smells y SOLID: A qué huele tu código?
Page 72: Code Smells y SOLID: A qué huele tu código?
Page 73: Code Smells y SOLID: A qué huele tu código?
Page 74: Code Smells y SOLID: A qué huele tu código?
Page 75: Code Smells y SOLID: A qué huele tu código?
Page 76: Code Smells y SOLID: A qué huele tu código?
Page 77: Code Smells y SOLID: A qué huele tu código?
Page 78: Code Smells y SOLID: A qué huele tu código?
Page 79: Code Smells y SOLID: A qué huele tu código?
Page 80: Code Smells y SOLID: A qué huele tu código?
Page 81: Code Smells y SOLID: A qué huele tu código?
Page 82: Code Smells y SOLID: A qué huele tu código?