SlideShare una empresa de Scribd logo
1 de 16
Refactoring to clean code


 Carlos Peix    Adrian Eidelman
  @carlospeix      @aeidelman
clean   CODE
Las pequeñas cosas
     importan
Producción vs.
Mantenimiento
Escribiendo código
          limpio

 No es lo mismo el proceso de escribir código
para hacerlo funcionar que el proceso de dejar
            nuestro código limpio.
Ser Profesionales

› Hacer el código claro, comprensible, limpio es tan
  importante como hacerlo ejecutable
› No solamente es “cost-effective”, es una cuestión
  de supervivencia profesional.
› Practicar!
“Clean code is simple, direct and reads like well-
written prose” - Grady Booch

“Clean code can be read and enhanced by a
developer other than its original author. It has unit
tests” - Dave Thomas

“Clean code always looks like it was written by
someone who cares” - Michael Feathers

“No duplication, expressiveness, meaningful names”
- Ron Jeffries
(c) 2008 Focus Shift/OSNews/Thom Holwerda - http://www.osnews.com/comics
DEMO
Clases

˃ clases deben ser pequeñas!
 Las
˃ y sola una razón por la cual deba
 Una
 modificarse.
˃ nombre de la clase debe describir qué
 El
 responsabilidad posee..
Nombres
˃Nombres por todos lados!
˃Revelar la intención
  – int d; // elapsed time in days
  – List<string> list1 = new List<string>();
˃Los humanos somos buenos con las palabras
˃Usar palabras “buscables”
˃Explicitar el código
  – if x[0] > 18 then …
Comentarios

• Comentarios = fracasos
• Difíciles de mantener

// Acá validamos si el cliente posee saldo
if (cliente.Saldo > totalCompra && cliente.Saldo <=
MAXIMO_TOTAL_COMPRA && …)
Funciones
˃Las funciones deben ser pequeñas!
˃Deben realizar sólo 1 cosa
˃Un nivel de abstracción por función
˃Usar nombres descriptivos
˃Argumentos: menos es más
˃Sin efectos secundarios
Formato

˃Funciones dependientes verticalmente cerca
˃Variables deben declarse tan cerca de su uso como
 posible
˃Indentación
˃Cada programador tiene sus reglas favoritas, pero
 si trabaja en equipo, el equipo tiene preponderancia
“Deja el mundo un poco mejor de lo que
 lo encontraste” – Boy Scouts of America
Refactoring to clean code

Más contenido relacionado

Destacado

NONG ORACHAT WATCHARAOPAS PORTFOLIO WORK 03 PROCESS 2011-2016
NONG ORACHAT WATCHARAOPAS PORTFOLIO WORK 03 PROCESS 2011-2016NONG ORACHAT WATCHARAOPAS PORTFOLIO WORK 03 PROCESS 2011-2016
NONG ORACHAT WATCHARAOPAS PORTFOLIO WORK 03 PROCESS 2011-2016Orachat Watcharaopas
 
Multipurpose Website blogwordpress.website
Multipurpose Website blogwordpress.websiteMultipurpose Website blogwordpress.website
Multipurpose Website blogwordpress.websiteblogwordpress
 
Dead horse bay teacher packet 2007
Dead horse bay teacher packet 2007Dead horse bay teacher packet 2007
Dead horse bay teacher packet 2007EducationJamaicaBay
 
Sobre el color
Sobre el colorSobre el color
Sobre el coloranejesusa
 
Vialidad revista argentina
Vialidad revista argentinaVialidad revista argentina
Vialidad revista argentinaAlvaro Reynaga
 
Estatutosminiempresa.odt
Estatutosminiempresa.odtEstatutosminiempresa.odt
Estatutosminiempresa.odtGood Shop
 
Alan Turing, día da ciencia en galego, IES A Basella
Alan Turing, día da ciencia en galego, IES A BasellaAlan Turing, día da ciencia en galego, IES A Basella
Alan Turing, día da ciencia en galego, IES A Basellapinksoda
 
¿Qué experiencia de usuario en los social media y cómo? (2012)
¿Qué experiencia de usuario en los social media y cómo? (2012)¿Qué experiencia de usuario en los social media y cómo? (2012)
¿Qué experiencia de usuario en los social media y cómo? (2012)Nieves Gonzalez
 
Calidad educativa Jardín de Niños Ebani - Ma Isabel e Ilda Aguirre, Rocío Al...
Calidad educativa Jardín de Niños Ebani -  Ma Isabel e Ilda Aguirre, Rocío Al...Calidad educativa Jardín de Niños Ebani -  Ma Isabel e Ilda Aguirre, Rocío Al...
Calidad educativa Jardín de Niños Ebani - Ma Isabel e Ilda Aguirre, Rocío Al...Fabiola Aranda
 
Escuela de padres qué juguetes son adecuados a esta edad
Escuela de padres qué juguetes son adecuados a esta edadEscuela de padres qué juguetes son adecuados a esta edad
Escuela de padres qué juguetes son adecuados a esta edadcarmenchuchu
 
Catalogazione SVB 2011-2012
Catalogazione SVB 2011-2012Catalogazione SVB 2011-2012
Catalogazione SVB 2011-2012Agnese Galeffi
 
Replicon UX Presentation
Replicon UX PresentationReplicon UX Presentation
Replicon UX PresentationJosh Jeffryes
 

Destacado (18)

NONG ORACHAT WATCHARAOPAS PORTFOLIO WORK 03 PROCESS 2011-2016
NONG ORACHAT WATCHARAOPAS PORTFOLIO WORK 03 PROCESS 2011-2016NONG ORACHAT WATCHARAOPAS PORTFOLIO WORK 03 PROCESS 2011-2016
NONG ORACHAT WATCHARAOPAS PORTFOLIO WORK 03 PROCESS 2011-2016
 
Presentacion
PresentacionPresentacion
Presentacion
 
Mi semana♥
Mi semana♥Mi semana♥
Mi semana♥
 
Multipurpose Website blogwordpress.website
Multipurpose Website blogwordpress.websiteMultipurpose Website blogwordpress.website
Multipurpose Website blogwordpress.website
 
Dead horse bay teacher packet 2007
Dead horse bay teacher packet 2007Dead horse bay teacher packet 2007
Dead horse bay teacher packet 2007
 
Sobre el color
Sobre el colorSobre el color
Sobre el color
 
Tp efapel 201302
Tp efapel 201302Tp efapel 201302
Tp efapel 201302
 
Vialidad revista argentina
Vialidad revista argentinaVialidad revista argentina
Vialidad revista argentina
 
Estatutosminiempresa.odt
Estatutosminiempresa.odtEstatutosminiempresa.odt
Estatutosminiempresa.odt
 
Alan Turing, día da ciencia en galego, IES A Basella
Alan Turing, día da ciencia en galego, IES A BasellaAlan Turing, día da ciencia en galego, IES A Basella
Alan Turing, día da ciencia en galego, IES A Basella
 
¿Qué experiencia de usuario en los social media y cómo? (2012)
¿Qué experiencia de usuario en los social media y cómo? (2012)¿Qué experiencia de usuario en los social media y cómo? (2012)
¿Qué experiencia de usuario en los social media y cómo? (2012)
 
Calidad educativa Jardín de Niños Ebani - Ma Isabel e Ilda Aguirre, Rocío Al...
Calidad educativa Jardín de Niños Ebani -  Ma Isabel e Ilda Aguirre, Rocío Al...Calidad educativa Jardín de Niños Ebani -  Ma Isabel e Ilda Aguirre, Rocío Al...
Calidad educativa Jardín de Niños Ebani - Ma Isabel e Ilda Aguirre, Rocío Al...
 
Escuela de padres qué juguetes son adecuados a esta edad
Escuela de padres qué juguetes son adecuados a esta edadEscuela de padres qué juguetes son adecuados a esta edad
Escuela de padres qué juguetes son adecuados a esta edad
 
Catalogazione SVB 2011-2012
Catalogazione SVB 2011-2012Catalogazione SVB 2011-2012
Catalogazione SVB 2011-2012
 
Workplace Design And Accommodating Workers With Disabilities
Workplace Design And Accommodating Workers With DisabilitiesWorkplace Design And Accommodating Workers With Disabilities
Workplace Design And Accommodating Workers With Disabilities
 
Las cronicas de redis
Las cronicas de redisLas cronicas de redis
Las cronicas de redis
 
Aspergilosis Broncopulmonar
Aspergilosis BroncopulmonarAspergilosis Broncopulmonar
Aspergilosis Broncopulmonar
 
Replicon UX Presentation
Replicon UX PresentationReplicon UX Presentation
Replicon UX Presentation
 

Similar a Refactoring to clean code

¿Te Sientes Orgulloso Del CóDigo Que Escribes?
¿Te Sientes Orgulloso Del CóDigo Que Escribes?¿Te Sientes Orgulloso Del CóDigo Que Escribes?
¿Te Sientes Orgulloso Del CóDigo Que Escribes?Israel Antezana Rojas
 
Lo que odiamos de la agilidad
Lo que odiamos de la agilidadLo que odiamos de la agilidad
Lo que odiamos de la agilidadLeonardo Soto
 
Curso TDD Ruby on Rails #01: Introducción al testing
Curso TDD Ruby on Rails #01: Introducción al testingCurso TDD Ruby on Rails #01: Introducción al testing
Curso TDD Ruby on Rails #01: Introducción al testingAlberto Perdomo
 
Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)Cesar Acosta
 
Programación extrema (xp)
Programación extrema (xp)Programación extrema (xp)
Programación extrema (xp)Juan Avendaño
 
Kleer yoseki coding dojo - Pre-Smalltalk 2012
Kleer   yoseki coding dojo - Pre-Smalltalk 2012Kleer   yoseki coding dojo - Pre-Smalltalk 2012
Kleer yoseki coding dojo - Pre-Smalltalk 2012Diogenes Moreira
 
El Desarrollador Total
El Desarrollador TotalEl Desarrollador Total
El Desarrollador TotalSergio Gil
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Alfredo Chavez
 
Extremeprograming
ExtremeprogramingExtremeprograming
Extremeprogramingestudiante
 
Improving as a developer through code reviews
Improving as a developer through code reviewsImproving as a developer through code reviews
Improving as a developer through code reviewsAnallely Olivares
 
Introducción al desarrollo guiado por pruebas
Introducción al desarrollo guiado por pruebasIntroducción al desarrollo guiado por pruebas
Introducción al desarrollo guiado por pruebasAlejandro Hernández
 

Similar a Refactoring to clean code (20)

¿Te Sientes Orgulloso Del CóDigo Que Escribes?
¿Te Sientes Orgulloso Del CóDigo Que Escribes?¿Te Sientes Orgulloso Del CóDigo Que Escribes?
¿Te Sientes Orgulloso Del CóDigo Que Escribes?
 
Lo que odiamos de la agilidad
Lo que odiamos de la agilidadLo que odiamos de la agilidad
Lo que odiamos de la agilidad
 
Curso TDD Ruby on Rails #01: Introducción al testing
Curso TDD Ruby on Rails #01: Introducción al testingCurso TDD Ruby on Rails #01: Introducción al testing
Curso TDD Ruby on Rails #01: Introducción al testing
 
Scrum y craftsmanship
Scrum y craftsmanshipScrum y craftsmanship
Scrum y craftsmanship
 
Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)Programación Extrema (Extream Programming XP)
Programación Extrema (Extream Programming XP)
 
Clean code y SOLID
Clean code y SOLIDClean code y SOLID
Clean code y SOLID
 
Programación extrema (xp)
Programación extrema (xp)Programación extrema (xp)
Programación extrema (xp)
 
Kleer yoseki coding dojo - 2012-08-03 - medellín
Kleer   yoseki coding dojo - 2012-08-03 - medellínKleer   yoseki coding dojo - 2012-08-03 - medellín
Kleer yoseki coding dojo - 2012-08-03 - medellín
 
Kleer yoseki coding dojo - Pre-Smalltalk 2012
Kleer   yoseki coding dojo - Pre-Smalltalk 2012Kleer   yoseki coding dojo - Pre-Smalltalk 2012
Kleer yoseki coding dojo - Pre-Smalltalk 2012
 
Emergence
EmergenceEmergence
Emergence
 
Esto es ingeniería inversa
Esto es ingeniería inversaEsto es ingeniería inversa
Esto es ingeniería inversa
 
El Desarrollador Total
El Desarrollador TotalEl Desarrollador Total
El Desarrollador Total
 
Day01
Day01Day01
Day01
 
Xp
XpXp
Xp
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
 
Extremeprograming
ExtremeprogramingExtremeprograming
Extremeprograming
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Improving as a developer through code reviews
Improving as a developer through code reviewsImproving as a developer through code reviews
Improving as a developer through code reviews
 
Un dia en la vida de un Software Engineer
Un dia en la vida de un Software EngineerUn dia en la vida de un Software Engineer
Un dia en la vida de un Software Engineer
 
Introducción al desarrollo guiado por pruebas
Introducción al desarrollo guiado por pruebasIntroducción al desarrollo guiado por pruebas
Introducción al desarrollo guiado por pruebas
 

Refactoring to clean code

  • 1. Refactoring to clean code Carlos Peix Adrian Eidelman @carlospeix @aeidelman
  • 2. clean CODE
  • 5. Escribiendo código limpio No es lo mismo el proceso de escribir código para hacerlo funcionar que el proceso de dejar nuestro código limpio.
  • 6. Ser Profesionales › Hacer el código claro, comprensible, limpio es tan importante como hacerlo ejecutable › No solamente es “cost-effective”, es una cuestión de supervivencia profesional. › Practicar!
  • 7. “Clean code is simple, direct and reads like well- written prose” - Grady Booch “Clean code can be read and enhanced by a developer other than its original author. It has unit tests” - Dave Thomas “Clean code always looks like it was written by someone who cares” - Michael Feathers “No duplication, expressiveness, meaningful names” - Ron Jeffries
  • 8. (c) 2008 Focus Shift/OSNews/Thom Holwerda - http://www.osnews.com/comics
  • 10. Clases ˃ clases deben ser pequeñas! Las ˃ y sola una razón por la cual deba Una modificarse. ˃ nombre de la clase debe describir qué El responsabilidad posee..
  • 11. Nombres ˃Nombres por todos lados! ˃Revelar la intención – int d; // elapsed time in days – List<string> list1 = new List<string>(); ˃Los humanos somos buenos con las palabras ˃Usar palabras “buscables” ˃Explicitar el código – if x[0] > 18 then …
  • 12. Comentarios • Comentarios = fracasos • Difíciles de mantener // Acá validamos si el cliente posee saldo if (cliente.Saldo > totalCompra && cliente.Saldo <= MAXIMO_TOTAL_COMPRA && …)
  • 13. Funciones ˃Las funciones deben ser pequeñas! ˃Deben realizar sólo 1 cosa ˃Un nivel de abstracción por función ˃Usar nombres descriptivos ˃Argumentos: menos es más ˃Sin efectos secundarios
  • 14. Formato ˃Funciones dependientes verticalmente cerca ˃Variables deben declarse tan cerca de su uso como posible ˃Indentación ˃Cada programador tiene sus reglas favoritas, pero si trabaja en equipo, el equipo tiene preponderancia
  • 15. “Deja el mundo un poco mejor de lo que lo encontraste” – Boy Scouts of America

Notas del editor

  1. Queremos dedicar la mayor parte de la sesión a ver código.
  2. Cleancode es acerca de pequeñas cosas cuyo valor lejos está de ser pequeño. Esas pequeñas cosas tienen que ver con prestar atención a detalles que van a repercutir fuertemente en la calidad de nuestro código, y eso va a tener un alto impacto en qué tan exitoso puede resultar el proyecto en el que trabajamos, y en qué tan profesionales somos.
  3. En la industria aumotriz, de la cual Agile se ha basado fuertemente, la gran mayoría del trabajo no está puesto en la producción, sino en el mantenimiento –o en evitarlo-. En software, el 80% de lo que hacemos es considerado “mantenimiento”. Más aún, dedicamos más veces a leer código –propio y de terceros- que lo que dedicamos a escribir código. Entonces hacer el código comprensible es tan importante como hacerlo ejecutable.
  4. Switch mental entre construir código para hacerlo funcional, y refactorizarlo
  5. Desafortunadamente en general no vemos esto como parte del arte de programar. Abandonamos nuestro código antes de tiempo, no porque esté listo, sino porque nuestro sistema de valores se focaliza en la apariencia externa en mayor medida que la esencia de lo que entregamos.
  6. La primer regla de las clases es que deben ser pequeñas. La segunda regla de las clases es que deben ser más pequeñas que eso.Si nos cuesta determinar un nombre para una clase, probablemente signifique que es demasiado grande.Técnica: Replace a methodwithMethodObject
  7. La primer regla de las funciones es que deben ser pequeñas. La segunda regla de las funciones es que deben ser más pequeñas que eso.