Refactorización de código en PyCharm

La refactorización de código es el proceso de optimizar la estructura interna del código sin cambiar su comportamiento externo.

El propósito de la refactorización es mejorar la legibilidad, mantenibilidad y extensibilidad del código, no añadir nuevas funciones ni corregir errores.

PyCharm ofrece a los desarrolladores de Python un conjunto de herramientas de refactorización automatizadas potentes y seguras, haciendo que la refactorización sea eficiente y menos propensa a errores.


Resumen de operaciones de refactorización comunes

A continuación se muestra la tabla de las operaciones de refactorización más comunes en PyCharm y sus atajos de teclado.

Operación de refactorización Atajo de teclado Descripción de la función
Rename Shift + F6 Renombrar símbolos como variables, funciones, clases, archivos, etc., y actualizar automáticamente todas las referencias
Extract Variable Ctrl + Alt + V Extraer la expresión seleccionada como variable
Extract Method Ctrl + Alt + M Extraer el bloque de código seleccionado como un método o función independiente
Extract Constant Ctrl + Alt + C Extraer el literal seleccionado como constante
Inline Ctrl + Alt + N Expandir en línea variables, métodos o constantes, eliminando capas intermedias innecesarias
Change Signature Ctrl + F6 Modificar la firma de funciones o métodos, incluyendo nombres, tipos, valores predeterminados y orden de los parámetros

Los atajos anteriores se basan en el mapeo de teclas predeterminado de Windows/Linux. Los usuarios de macOS deben reemplazar Ctrl por Command y Alt por Option.


Práctica: Renombrar variables

Renombrar es la operación de refactorización más frecuente. A continuación, se muestra el flujo completo de Rename con un ejemplo concreto.

Supongamos que tenemos un fragmento de código que calcula la velocidad de un objeto en movimiento, donde el nombre de la variablespeedno es lo suficientemente preciso y debe cambiarse avelocity。

Código original antes de la refactorización

Ejemplo

# Código original: el nombre de la variable speed no es semánticamente preciso
def calculate_motion(distance, time):
    speed = distance / time  # speed se refiere más a la rapidez, mientras que velocity enfatiza la velocidad vectorial
    return speed

result = calculate_motion(100, 10)
print(result)

Pasos de operación

  1. Coloque el cursor sobre el nombre de la variablespeed.
  2. Presione el atajo de tecladoShift + F6y PyCharm resaltará todas las referencias de esa variable.
  3. Escriba directamente el nuevo nombrevelocityy PyCharm mostrará una vista previa en tiempo real de todas las posiciones que se van a modificar.
  4. PresioneEnterpara confirmar; todas las referencias se actualizarán sincronizadamente.

También puede hacer doble clic para seleccionar la variable, luego hacer clic derecho y elegir Refactorizar en el menú emergente, y después Renombrar:

En la ventana emergente, renómbrela:

Código después de la refactorización

Ejemplo

# Código después de la refactorización: el nombre de la variable velocity expresa con mayor precisión el significado de velocidad vectorial
def calculate_motion(distance, time):
    velocity = distance / time  # El nombre de la variable se ha renombrado de speed a velocity
    return velocity

result = calculate_motion(100, 10)
print(result)
[/mycode4]

La refactorización Rename de PyCharm busca referencias en todo el proyecto, incluidas las referencias en comentarios y cadenas, asegurando que no se omita ninguna.


Abrir el menú de refactorización con un solo clic

Si no recuerda los atajos de las distintas operaciones de refactorización, puede utilizar el atajo universalCtrl + Alt + Shift + T(en macOS esCommand + Option + Shift + T) para abrir el menú de refactorización.

Este menú mostrará todas las operaciones de refactorización disponibles en la posición actual del cursor; solo necesita seleccionar una en el menú.

Este método es adecuado para operaciones de refactorización poco frecuentes, o como una solución de transición para principiantes.


Función de vista previa antes de la refactorización

Antes de ejecutar la refactorización, PyCharm proporciona la función de vista previaPreview, que le permite comprender completamente el alcance de la refactorización antes de confirmar.

Cuando presione el atajo de refactorización, PyCharm mostrará un cuadro de diálogo que contiene el botónPreview.

Al hacer clic en el botón Preview, PyCharm abrirá una ventana de comparación en la parte inferior, con el código antes del cambio a la izquierda y el código después del cambio a la derecha.

Puede revisar cada modificación una por una, decidir si mantenerla u omitirla y, cuando haya confirmado que es correcto, haga clic enDo Refactorpara ejecutar la refactorización.

Se recomienda encarecidamente utilizar la función Preview al refactorizar proyectos grandes o módulos centrales, para evitar errores causados por modificaciones accidentales.


Precauciones en la refactorización

Aunque las herramientas de refactorización de PyCharm son muy fiables, aún debe prestar atención a los siguientes puntos al refactorizar.

  • Antes de refactorizar, asegúrese de que el código esté confirmado en el sistema de control de versiones, para poder revertirlo si ocurre algún imprevisto.
  • Después de refactorizar, ejecute inmediatamente las pruebas unitarias existentes para asegurarse de que el comportamiento no haya cambiado.
  • Realice solo una operación de refactorización a la vez, para evitar confusiones al modificar demasiadas cosas simultáneamente.
  • Si la refactorización afecta a una API pública, asegúrese de que todos los llamadores estén incluidos en el alcance de la refactorización.

Si domina estas técnicas de refactorización, su código se mantendrá siempre limpio, claro y fácil de mantener.

Otras extensiones