Refactorizar: Extraer un método
Ejemplo de refactorización para la técnica Extraer un método
Código sin refactorizar:
Python
def generar_reporte(clientes):
"""
Genera un reporte en formato HTML con la información de los clientes.
Args:
clientes: Una lista de diccionarios que representan los clientes.
Returns:
Una cadena de texto con el HTML del reporte.
"""
html = "<html><head><title>Reporte de clientes</title></head><body>"
for cliente in clientes:
html += "<h1>" + cliente["nombre"] + "</h1>"
html += "<ul>"
html += "<li>ID: " + str(cliente["id"]) + "</li>"
html += "<li>Email: " + cliente["email"] + "</li>"
html += "<li>Teléfono: " + cliente["telefono"] + "</li>"
html += "</ul>"
html += "</body></html>"
return html
Problema del código sin refactorizar:
- El método
generar_reportees demasiado largo y contiene código repetitivo para generar la información de cada cliente.
Refactorización utilizando la técnica Extraer un método:
Python
def generar_reporte(clientes):
"""
Genera un reporte en formato HTML con la información de los clientes.
Args:
clientes: Una lista de diccionarios que representan los clientes.
Returns:
Una cadena de texto con el HTML del reporte.
"""
html = "<html><head><title>Reporte de clientes</title></head><body>"
for cliente in clientes:
html += generar_informacion_cliente(cliente)
html += "</body></html>"
return html
def generar_informacion_cliente(cliente):
"""
Genera el HTML con la información de un cliente.
Args:
cliente: Un diccionario que representa un cliente.
Returns:
Una cadena de texto con el HTML del cliente.
"""
html = "<h1>" + cliente["nombre"] + "</h1>"
html += "<ul>"
html += "<li>ID: " + str(cliente["id"]) + "</li>"
html += "<li>Email: " + cliente["email"] + "</li>"
html += "<li>Teléfono: " + cliente["telefono"] + "</li>"
html += "</ul>"
return html
Beneficios de la refactorización:
- El código está mejor organizado y es más fácil de leer.
- Se ha eliminado la duplicación de código.
- El método
generar_reportees ahora más corto y fácil de entender. - El método
generar_informacion_clientese puede reutilizar para generar HTML con la información de un cliente en cualquier parte del programa.
En este ejemplo, la técnica Extraer un método ha permitido crear un código más modular y reutilizable. Es importante tener en cuenta que el nombre de los métodos extraídos debe ser descriptivo y reflejar claramente su propósito.
Comentarios
Publicar un comentario