Apuntes_Python/01_curso/Modulo_3/3-4a_Intro_refactorizacion.md

51 lines
2.5 KiB
Markdown
Raw Normal View History

2022-12-24 22:41:20 -03:00
## Refactorización de Código
Tecnica para reestructurar el código, cambiando la estructura interna
sin camiar el comportamiento del programa.
Se utliza para mejorar el código o mantiendo la funcionalidad ya desarrollada.
La programación es un proceso de aprendizaje, iterativo e incremental. Y este conocimiento se
debe incorporar al código.
Ej. aprendemos que cierto concepto en el dominio del problema
se llama de una manera, pero fue nombrado de otra.
Se renombra la clase para que tenga una relación directa
con el dominio del problema.
El código queda mas comprensible y evita errores de interpretación.
Ejemplos de Refactoring
* Rename: `Renombrar objeto y sus referencias (nombre de clase, metodo, variable, etc.)`
* Extract method: `Crear nuevo método con el código seleccionado y reemplaza con un envío de mensaje a ese método (
Algunas herramientas reemplazan todas las repeticiones de la selección)`
* Move method: `Mueve el método seleccionado a una clase visible dentro del contexto en que se mueve (Modifica todas las referencias al método movido)`
* Convert local to field: `Convierte una variable local, en una variable de instancia`
* Extract to local: `Extrae el código seleccionado en una variable local iniciada con este`
* Changue method signature: `Permite modificar los elementos que definen un método (ej. los parametros. Modificas todos los senders acorde a la nueva definición)`
* Inline: `copia el código representado por el método o variable a los lugares donde se referencia dicho método o variable`
* Encapsulated field: `referencias a variables de instancia se reemplazan por "getters" y "setters"`
* Pull up: `mueve variables de instancia y/o métodos a la superclase o declara el método como abstracto en la superclase`
* Push down: `mueve un conjunto de variables de instancia y/o métodos a las subclases`
Es recomendable tener bien testeado el programa antes de relizar un *Refactor*.
El software está en constante cambio, por ende, hay debe estar preparado para cambiar facilmente.
Por ello esta es una técnica muy utilizada porqué el proceso de desarrollo de software, es iterativo e incremental.
## Mantenimiento de Software
El mantenimiento de un programa no es solo correción de errores.
Es una etapa en el ciclo de desarrollo del software,
como mejoras de funxionalidad, nuevos features, optimización, etc.
El mantenimiento es un desarrollo evolutivo.