51 lines
2.5 KiB
Markdown
51 lines
2.5 KiB
Markdown
|
## 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.
|