Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Desarrollá eficientemente utilizando refactorings - Nerdearla 101 2021

Desarrollá eficientemente utilizando refactorings - Nerdearla 101 2021

¿Sabías que muchos de los cambios al código que hacemos a mano se pueden hacer automáticamente? Tenemos excelentes ambientes de programación que nos ayudan en esas tareas comunes y repetitivas. Si no los conocés, o querés saber un poquito más, ¡te presento a los refactorings!

Presentación en video en: https://www.youtube.com/watch?v=UC-IQiE5PG8&list=PLTTdzfRyGY1tqTWoUQ7gdldNbz-eGBFc3&index=13

Nahuel Garbezza

August 01, 2021
Tweet

More Decks by Nahuel Garbezza

Other Decks in Programming

Transcript

  1. #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
  2. #nerdearla Refactoring Transformación de un programa con el objetivo de

    mejorarlo sin alterar su comportamiento @ngarbezza
  3. #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
  4. #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
  5. #nerdearla Tests automatizados Cumplen un rol esencial para refactorizar con

    seguridad, nos garantizan que se preserva el comportamiento @ngarbezza
  6. #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
  7. #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
  8. #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
  9. #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