Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Prompt engineering para programación, Unidad 6 — Refactorización y mejora de código, 6.2 — Prompts de mejora incremental ·

Comparar versiones

Comparar versiones para refactorización efectiva

Introducción

La refactorización es un proceso esencial para mantener y mejorar el código existente. Sin embargo, realizar cambios significativos sin tener una visión clara de cómo afectan a la aplicación puede llevar a errores y malentendidos. Para mitigar estos riesgos, comparar versiones antes y después del cambio es crucial.

Al refactorizar, los desarrolladores buscan mejorar el código en términos de claridad, legibilidad y eficiencia sin cambiar su comportamiento. Esto implica que el nuevo código debe ser equivalente al anterior en todos los aspectos relevantes para la funcionalidad. Comparar versiones permite asegurarse de que esto se cumple.

Explicación principal con ejemplos

La comparación de versiones no es solo un proceso manual; también puede ser automatizado utilizando prompts eficaces. Imagina que tienes una función en Python:

def calculate_area(radius):
    pi = 3.141592653589793
    return pi * (radius ** 2)

Quieres refactorizar esta función para mejorar la legibilidad y la eficiencia del código. Aquí tienes un prompt que puedes usar para generar una nueva versión de la función:

## Prompt

Genera una nueva versión de la función `calculate_area` en Python, manteniendo exactamente el mismo comportamiento pero con mejor claridad y legibilidad.

- La función debe recibir un parámetro llamado `radius`.
- Debe utilizar el valor de pi (π) como constante.
- No se deben hacer cambios que alteren la funcionalidad.

La salida generada por el LLM podría ser algo así:

def calculate_area(radius):
    """Calcula el área de un círculo dado su radio.

    Args:
        radius (float): El radio del círculo.

    Returns:
        float: El área del círculo.
    """
    pi = 3.141592653589793
    area = pi * (radius ** 2)
    return area

En esta nueva versión, se ha añadido una documentación detallada y se ha utilizado un nombre más descriptivo para la variable area, lo que hace el código más legible. Sin embargo, el comportamiento sigue siendo exactamente el mismo.

Errores típicos / trampas

  1. Cambios de comportamiento: Al refactorizar, es fácil introducir cambios subconscientes en el código sin darse cuenta. Por ejemplo, cambiar radius a r podría no alterar la funcionalidad visible, pero podrían surgir problemas en otros componentes que dependan del nombre exacto.
  1. Omitir casos de prueba: Es común omitir la revisión exhaustiva de las pruebas existentes después de un cambio significativo. Esto puede ocultar errores subyacentes hasta que se encuentre un caso de uso no previsto.
  1. Confusión entre versiones: Si no documentas claramente las diferencias entre versiones, es fácil confundirse o olvidar cuál versión del código está en producción. Esto puede llevar a errores al mezclar versiones.

Checklist accionable

  1. Documenta cambios: Documenta todos los cambios realizados y asegúrate de que se conserva la funcionalidad.
  2. Ejecuta pruebas unitarias: Verifica que todas las pruebas existentes sigan pasando para detectar cualquier cambio inesperado.
  3. Revisa casos de prueba adicionales: Crea nuevos casos de prueba si es necesario, especialmente para áreas no cubiertas anteriormente.
  4. Compare versiones: Usa herramientas como git diff o servicios de comparación de código para visualizar las diferencias entre versiones.
  5. Valida cambios manuales: Si el LLM sugiere cambios significativos, revisa manualmente los mismos antes de implementarlos.
  6. Documenta prompts y resultados: Mantén un registro de los prompts usados y los resultados obtenidos para futuras referencias.

Cierre con "Siguientes pasos"

Siguientes pasos

  • Avance al siguiente nivel en prompt engineering: Aprende a generar prompts más complejos que incluyan lógica condicional y bucles.
  • Exploremos el uso de testing para refactoring: Mejora la calidad del código mediante pruebas automatizadas.
  • Explore la integración continua con IA: Automatiza la comparación de versiones en tu flujo de trabajo diario.

Siguiendo estos pasos, podrás implementar cambios significativos de manera segura y eficiente, mejorando la calidad de tu código y el rendimiento del equipo.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).