100% satisfaction guarantee Immediately available after payment Both online and in PDF No strings attached 4.2 TrustPilot
logo-home
Class notes

Refactorizacion de código

Rating
-
Sold
1
Pages
17
Uploaded on
19-05-2024
Written in
2021/2022

Apuntes del tema 4: Refactorizacion de código de la asignatura entornos de desarrollo de 1ª del CFGS Desarrollo de aplicaciones multiplataforma

Institution
Course










Whoops! We can’t load your doc right now. Try again or contact support.

Written for

Course

Document information

Uploaded on
May 19, 2024
Number of pages
17
Written in
2021/2022
Type
Class notes
Professor(s)
.
Contains
All classes

Subjects

Content preview

ED Refactorización 2021-2022




ÍNDICE

Concepto de refactorización ......................................................................................... 2
Limitaciones ................................................................................................................. 3
Patrones de refactorización ........................................................................................... 3
Refactorización en Eclipse............................................................................................ 4
Renombrar ................................................................................................................ 4
Mover ....................................................................................................................... 5
Cambiar signatura del método................................................................................... 5
Extraer variable local ................................................................................................ 7
Convertir variable local en atributo ........................................................................... 7
Extraer método ......................................................................................................... 8
Autoencapsular atributo ............................................................................................ 9
Más refactorizaciones recomendadas ............................................................................ 9
Eliminar variable temporal de un solo uso ................................................................ 9
Sustituir variable temporal por un método reutilizable en más lugares..................... 10
Sustituir cálculo por una función-método ................................................................ 10
Variables autoexplicativas ...................................................................................... 10
Uso de final para cálculo en métodos ...................................................................... 11
Cambio de algoritmo que busque la eficiencia ........................................................ 11
Cuándo cambiar métodos entre clases ..................................................................... 12
Extracción de clases ................................................................................................ 13
Clases delegadas ..................................................................................................... 14
Reemplazar valores con objetos .............................................................................. 15
Uso adecuado de herencia y polimorfismo .............................................................. 16
El principio SOLID ................................................................................................ 17




1

,ED Refactorización 2021-2022


Concepto de refactorización
La refactorización es una técnica, que consiste en realizar pequeñas transformaciones en
el código de un programa, para mejorar la estructura sin que cambie el comportamiento
ni funcionalidad del mismo. Su objetivo es mejorar la estructura, la legibilidad o la
eficiencia del código.

Con la refactorización se mejora el diseño del software, hace que el software sea más fácil
de entender, hace que el mantenimiento del software sea más sencillo, la refactorización
ayuda a que el programa sea más rápido.

La idea de refactorización de código, se basa en el concepto matemático de factorización
de polinomios. Así, resulta que (x + 1)(x − 1) se puede expresar como x2 − 1 sin que se
altere su sentido.

Algunas pistas que nos pueden indicar la necesidad de refactorizar un programa son:

• Código duplicado.
• Métodos demasiado largos.
• Clases muy grandes o con demasiados métodos.
• Métodos más interesados en los datos de otra clase que en los de la propia.
• Grupos de datos que suelen aparecer juntos y parecen más una clase que datos
sueltos.
• Clases con pocas llamadas o que se usan muy poco.
• Exceso de comentarios explicando el código.

Hay que resaltar que la refactorización no cambia el comportamiento observable del
software. El software sigue cumpliendo la misma función que hacía antes. Ningún
usuario, ya sea usuario final u otro programador, podrá determinar qué cosas han
cambiado.

Podemos definir el concepto de refactorización de dos formas:

• Refactorización: Cambio hecho en la estructura interna del software para hacerlo
más fácil de entender y fácil de modificar sin modificar su comportamiento.

Ejemplos de refactorización es "Extraer Método" y "Encapsular Campos". La
refactorización es normalmente un cambio pequeño en el software que mejora su
mantenimiento.

• Campos encapsulados: Se aconseja crear métodos getter y setter, (de asignación
y de consulta) para cada campo que se defina en una clase. Cuando sea necesario
acceder o modificar el valor de un campo, basta con invocar al
método getter o setter según convenga.



• Refactorizar: Reestructurar el software aplicando una serie de refactorizaciones
sin cambiar su comportamiento



2

, ED Refactorización 2021-2022


Limitaciones
Se ha constatado que la refactorización presente problemas en algunos aspectos del
desarrollo.

Un área problemática de la refactorización son las bases de datos. Una base de datos
presenta muchas dificultades para poder ser modificada, dado la gran cantidad de
interdependencias que soporta. Cualquier modificación que se requiera de las bases de
datos, incluyendo modificación de esquema y migración de datos, puede ser una tarea
muy costosa. Es por ello que la refactorización de una aplicación asociada a una base de
datos, siempre será limitada, ya que la aplicación dependerá del diseño de la base de datos.

Otra limitación, es cuando cambiamos interfaces. Cuando refactorizamos, estamos
modificando la estructura interna de un programa o de un método. El cambio interno no
afecta al comportamiento ni a la interfaz. Sin embargo, si renombramos un método, hay
que cambiar todas las referencias que se hacen a él. Siempre que se hace esto se genera
un problema si es una interfaz pública. Una solución es mantener las dos interfaces, la
nueva y la vieja, ya que si es utilizada por otro clase o parte del proyecto, no podrá
referenciarla.

Hay determinados cambios en el diseño que son difíciles de refactorizar. Es muy difícil
refactorizar cuando hay un error de diseño o no es recomendable refactorizar, cuando la
estructura a modificar es de vital importancia en el diseño de la aplicación.

Hay ocasiones en las que no debería refactorizar en absoluto. Nos podemos encontrar con
un código que, aunque se puede refactorizar, sería más fácil reescribirlo desde el
principio. Si un código no funciona, no se refactoriza, se reescribe.


Patrones de refactorización
Algunos de los patrones más habituales de refactorización, que vienen ya integrados en
la mayoría de los entornos de desarrollos, son los siguientes:

• Renombrar. Cambiar el nombre de un paquete, clase, método o campo, por un
nombre más significativo.
• Encapsular campos. Crear métodos de asignación y de consulta (getters y
setters) para los campos de la clase, que permitan un control sobre el acceso de
estos campos, debiendo hacerse siempre mediante el uso de estos métodos.
• Sustituir bloques de código por un método. En ocasiones se observa que un
bloque de código puede constituir el cuerpo de un método, dado que implementa
una función por si mismo o aparece repetido en múltiples sitios. De esta forma,
cada vez que queramos acceder a ese bloque de código, bastaría con invocar al
método.
• Modificar la extensión del código. Hacer un código más extenso si se gana en
claridad o menos extenso sólo si con eso se gana eficiencia.
• Reorganizar código condicional complejo. Patrón aplicable cuando existen
varios if o condiciones anidadas o complejas.
• Crear código común (en una clase o método) para evitar el código repetido.



3
$8.65
Get access to the full document:

100% satisfaction guarantee
Immediately available after payment
Both online and in PDF
No strings attached

Get to know the seller
Seller avatar
saragonzalo

Get to know the seller

Seller avatar
saragonzalo juan de la cierva
Follow You need to be logged in order to follow users or courses
Sold
1
Member since
1 year
Number of followers
0
Documents
115
Last sold
8 months ago

0.0

0 reviews

5
0
4
0
3
0
2
0
1
0

Recently viewed by you

Why students choose Stuvia

Created by fellow students, verified by reviews

Quality you can trust: written by students who passed their tests and reviewed by others who've used these notes.

Didn't get what you expected? Choose another document

No worries! You can instantly pick a different document that better fits what you're looking for.

Pay as you like, start learning right away

No subscription, no commitments. Pay the way you're used to via credit card and download your PDF document instantly.

Student with book image

“Bought, downloaded, and aced it. It really can be that simple.”

Alisha Student

Frequently asked questions