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_reporte es 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_reporte es ahora más corto y fácil de entender.
  • El método generar_informacion_cliente se 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

Entradas más populares de este blog

Malos olores

Refactorización

Refactorización: Eliminar código muerto