Refactoring.guru: Refactorización y patrones de diseño

Al refactorizar un código se modifica de forma que sea más legible y se eviten futuros problemas.

Por ejemplo, algo como:

int precio(int a) {
int p;
if(a < 10) {
p = 0;
} else if(a >= 10 or a < 20) {
p = 10;
} else {
p = 20;
}
return p;
}

Se puede transformar a:

int precio(int edad) {
if(edad>=20)
return 20;
if(edad < 10)
return 0;
// Edad entre 10 y 20:
return 10;
}

El código final es más corto y legible. Las técnicas que se usan para refactorizar están más que descritas en la literatura.

Por casualidad me encontré con:

https://refactoring.guru/

En esta página hay un resumen de las técnicas de refactorización y también se puede encontrar otro resumen de patrones de diseño.

En el ejemplo anterior se ha renombrado una variable. También se ha usado:

https://refactoring.guru/remove-assignments-to-parameters

Se ha intentado usar:

https://refactoring.guru/replace-nested-conditional-with-guard-clauses

pero se ha visto que reordenando los condicionales, se podía eliminar un condicional y sustituirlo por un comentario.

Es buena idea ponerse el siguiente enlace en favoritos y visitarlo leyendo una técnica al azar de vez en cuando:

https://refactoring.guru/refactoring/techniques

Hay que tener en cuenta que la refactorización trata de mejorar la legibilidad del código, no de hacerlo más corto u óptimo. Puede suceder que después de refactorizar haya más código. También podría ocurrir que el rendimiento mejore o empeore.

Patrones de diseño

Imagina que un arquitecto va a construir una casa. Hay una serie de técnicas y métodos que usará que otros arquitectos ya han comprobado a lo largo de la historia que funcionan y le ahorrarán problemas a largo plazo. Por ejemplo, usará vigas de hormigón en lugar de arcos de medio punto y bóvedas de cañón.

Los patrones de diseño se podrían asimilar a dichas técnicas. Por ejemplo, si tienes una biblioteca muy compleja de usar, pero sabes que hay una determinada característica que se va a usar mucho, se puede crear una función que simplifique el uso de esa característica. Esto es un patrón de diseño (facade):

https://refactoring.guru/design-patterns/facade

Otro patrón es «singleton». Imagina que en un código necesitas hacer una conexión a un recurso que cuesta mucho realizar. Una vez conectado, compensa compartir la conexión dentro de nuestro código. Si el proyecto es muy grande y trabajan muchas personas en él, se corre el peligro de volver a realizar otra conexión al recurso en otro lugar. Singleton propone crear una función que sea la encargada de conectar con el recurso y siempre devolverá el objeto ya creado de forma que no se repita el proceso de conexión. Merece la pena ver la descripción que se hace en «refactoring.guru»:

https://refactoring.guru/design-patterns/singleton

También merece la pena ponerse el siguiente enlace en favoritos y visitar los patrones al azar:

https://refactoring.guru/design-patterns/catalog

Espero que os sea útil.

Esta entrada fue publicada en Software. Guarda el enlace permanente.

Deja un comentario