Slide 1

Slide 1 text

Desarrollá eficientemente utilizando refactorings Nahuel Garbezza - @ngarbezza

Slide 2

Slide 2 text

#nerdearla ¡Hola! 󰗝 Nahuel Garbezza ● Lic. en Informática (UNQ) ● Desarrollador de software en 10Pines ● Docente de Programación Orientada a Objetos (UNQ, UCA) ● Entusiasta de lenguajes dinámicos, diseño con objetos y TDD

Slide 3

Slide 3 text

¿Qué es un refactoring?

Slide 4

Slide 4 text

#nerdearla Refactoring Transformación de un programa con el objetivo de mejorarlo sin alterar su comportamiento @ngarbezza

Slide 5

Slide 5 text

#nerdearla 1992 “Refactoring Object-Oriented frameworks”, tesis doctoral de William Odpyke. Primera vez que se introduce la idea de refactoring en el contexto de la ingeniería de software. 1995 “A refactoring tool for Smalltalk”, por Don Roberts, John Brant and Ralph Johnson. Primera herramienta de refactorings automáticos. 1999 “Refactoring: improving the design of existing code”, libro de Martin Fowler. Popularización de los refactorings. Un poco de historia... @ngarbezza

Slide 6

Slide 6 text

Características de los refactorings

Slide 7

Slide 7 text

#nerdearla Tienen nombre Para construir un lenguaje común entre desarrolladorxs Son automáticos y guiados Requieren ciertos datos iniciales y después realizan su tarea automáticamente Preservan comportamiento El programa cambia sólo internamente (el cómo, no el qué) Representan UN cambio Encapsulan varios cambios atómicos en un cambio semántico Se pueden deshacer Podemos volver al estado original del programa Características de los refactorings @ngarbezza

Slide 8

Slide 8 text

#nerdearla Tests automatizados Cumplen un rol esencial para refactorizar con seguridad, nos garantizan que se preserva el comportamiento @ngarbezza

Slide 9

Slide 9 text

Demo 󰱢

Slide 10

Slide 10 text

Refactorings básicos: rename, extract, inline

Slide 11

Slide 11 text

#nerdearla Conocimos Rename, Extract Variable, Inline Variable, Extract Method Utilizamos Javascript con VS Code + plugin Abracadabra* para refactorings Practicamos Hacer y deshacer un refactoring, trabajar con los atajos de teclado Verificamos Preservación de comportamiento Refactorings básicos: resumen @ngarbezza * Abracadabra: Plugin para VS Code: https://marketplace.visualstudio.com/items?itemName=nicoespeon.abracadabra

Slide 12

Slide 12 text

Refactorings más complejos: introduce parameter object

Slide 13

Slide 13 text

#nerdearla Conocimos Introduce Parameter Object (¡pero hay muchos más!) Utilizamos Java con IntelliJ Configuramos Los datos necesarios para iniciar el refactoring Visualizamos Los efectos generados (mejoras a nivel diseño) en nuestro programa Refactorings complejos: resumen @ngarbezza

Slide 14

Slide 14 text

Conclusiones

Slide 15

Slide 15 text

#nerdearla Conclusiones ¡Recordar! 1. Los refactorings no cambian lo que hace un programa, sino cómo lo hace 2. Preferimos refactorings sobre cambios manuales 3. No refactorizamos sin antes haber escrito tests 4. Refactorizamos mientras los tests pasan

Slide 16

Slide 16 text

#nerdearla Conclusiones ¡Practicar! 1. Conocer los refactorings, comprender qué pasos hacen 2. Experimentar, ver qué resultados generan, hacer y deshacer, combinar varios refactorings 3. Aprovechar todo lo que nos ofrece el IDE, como los atajos de teclado y la vista previa

Slide 17

Slide 17 text

Testear y refactorizar: un círculo virtuoso

Slide 18

Slide 18 text

¡Gracias!