Refactorización del código de Python en Visual Studio
La reutilización del código existente y la actualización de código son tareas comunes para los desarrolladores. Puede que quiera refactorizar el código existente para otro propósito y ahorrar tiempo sin tener que escribir todo el código nuevo. Puede que quiera limpiar el código para quitar elementos no utilizados o actualizar importaciones y métodos para que estén actualizados con versiones recientes.
Visual Studio proporciona varios comandos para ayudarle a transformar y limpiar automáticamente el código fuente de Python:
- Cambiar nombre cambia el nombre de la clase, el método o la variable seleccionados.
- Agregar importación: proporciona una etiqueta inteligente para agregar una importación que falta.
- Quitar importaciones no usadas quita las importaciones no utilizadas.
Requisitos previos
- Visual Studio. Para instalar el producto, siga los pasos descritos en Instalación de Visual Studio.
- Acceso a un proyecto de código de Python con código existente.
Cambio del nombre de una clase, un método o una variable
Puede usar el comando Rename para cambiar el nombre de un identificador específico, incluida una clase, un método o una variable. Visual Studio admite la actualización de todas las instancias del identificador o solo las instancias específicas que indique.
En los pasos siguientes se muestra cómo usar el comando Rename en el código.
En el código, haga clic con el botón derecho en el identificador cuyo nombre desea cambiar y seleccione Cambiar nombre. También puede colocar el símbolo de intercalación en un identificador y seleccionar Editar>Refactorizar>Cambiar nombre en el menú o usar el método abreviado del teclado F2.
En el cuadro de diálogo Cambiar nombre, escriba el nuevo nombre del identificador y seleccione OK:
En el cuadro de diálogo siguiente, seleccione los archivos e instancias del código que deben usar el nuevo nombre. Puede seleccionar una instancia individual para obtener una vista previa del cambio específico:
Seleccione Apply (Aplicar) para realizar los cambios en los archivos de código fuente.
En el código, haga clic con el botón derecho en el identificador cuyo nombre desea cambiar y seleccione Cambiar nombre. También puede colocar el símbolo de intercalación en un identificador y seleccionar Editar>Refactorizar>Cambiar nombre en le menú o utilizar el método abreviado del teclado Ctrl+R.
En el cuadro de diálogo Cambiar nombre, escriba el nuevo nombre para el identificador seguido de Entrar:
Adición de una instrucción de importación
Si tiene identificadores en el código a los que les falta información de definiciones o tipos auxiliares, Visual Studio puede ayudarle a corregir el problema. Al colocar el símbolo de intercalación en un identificador que carece de información, Visual Studio muestra una etiqueta inteligente (bombilla) a la izquierda del código. La etiqueta enumera los comandos para agregar las instrucciones import
o from ... import
necesarias para el identificador correspondiente.
Los pasos siguientes muestran cómo trabajar con la etiqueta inteligente para agregar importaciones en el código.
En el código, coloque el símbolo de intercalación en un identificador para el que Visual Studio muestra la etiqueta inteligente (bombilla). En este ejemplo, la etiqueta inteligente se muestra para la llamada al módulo matemático:
En el menú de etiqueta inteligente, seleccione el comando para agregar la información necesaria del módulo o del tipo al archivo de código. En este ejemplo, se ha seleccionado el comando para agregar la instrucción
import math
.Visual Studio ofrece finalizaciones de
import
para paquetes de nivel superior y módulos en el proyecto actual y la biblioteca estándar. Visual Studio también ofrece finalizaciones defrom ... import
para submódulos y subpaquetes, así como para miembros de módulo. Las finalizaciones incluyen funciones, clases o datos exportados.Después de seleccionar una opción, confirme que el cambio esperado se realiza en el archivo.
Visual Studio agrega la instrucción
import
en la parte superior del archivo del código, detrás de otras importaciones, o a una instrucciónfrom ... import
existente, si ya se importó el mismo módulo. En este ejemplo, la instrucciónimport math
se agrega en la parte superior del archivo después de las demás importaciones:
Visual Studio intenta filtrar los miembros que no están definidos en un módulo. Un ejemplo es como un módulo importado en otro módulo que no es un elemento secundario del módulo de importación. Muchos módulos usan la instrucción import sys
en lugar de from xyz import sys
. No verá una finalización para importar el módulo sys
desde otros módulos, aunque a los módulos les falte un miembro __all__
que excluye el módulo sys
.
De forma similar, Visual Studio filtra las funciones que se importan desde otros módulos o el espacio de nombres integrado. Si un módulo importa la función settrace
desde el módulo sys
, en teoría, podría importar la función desde ese módulo. Sin embargo, el mejor enfoque es usar la instrucción import settrace from sys
directamente, por lo que Visual Studio ofrece específicamente esa instrucción.
Por último, supongamos que normalmente se excluye un módulo, pero tiene otros valores que se incluyen como un nombre asignado con un valor en el módulo. Visual Studio sigue excluyendo la importación. En este comportamiento se supone que el valor no se debe exportar porque se define en otro módulo. Es probable que otra asignación sea un valor ficticio que tampoco se exporte.
Quitar importaciones no usadas
Al escribir código, resulta fácil terminar con instrucciones import
para módulos que no se usan en absoluto. Dado que Visual Studio analiza el código, puede determinar automáticamente si una instrucción import
es necesaria; basta con que vea si el nombre importado se usa dentro del ámbito después de que se produzca la instrucción.
En los pasos siguientes se muestra cómo quitar las importaciones sin usar en el código.
Use el botón derecho en cualquier lugar del editor y seleccione Quitar importaciones. Puede quitar la importación de Todos los ámbitos o solo del Ámbito actual.
Visual Studio determina si hay módulos no utilizados en el código y quita las instrucciones
import
correspondientes.Después de seleccionar una opción, confirme que los cambios esperados se realizan en el archivo. En este ejemplo, Visual Studio quita los tres módulos no usados: binascii, array y glob.
En el código, coloque el símbolo de intercalación en una instrucción
import
para la que Visual Studio muestra la etiqueta inteligente (bombilla). En este ejemplo, la etiqueta inteligente se muestra para los módulos no usados binascii, array y glob:Seleccione la opción Quitar todas las importaciones sin usar o Quitar importación sin usar para quitar solo el módulo seleccionado.
Después de seleccionar una opción, confirme que los cambios se realizan en el archivo. En este ejemplo, Visual Studio quita los tres módulos no usados: binascii, array y glob.
Consideraciones al usar comandos de refactorización
Antes de usar los comandos de refactorización, revise las consideraciones siguientes.
Después de ejecutar un comando de refactorización, puede revertir los cambios con el comando Editar>Deshacer. El comando Cambiar nombre ofrece una característica de Vista previa, por lo que puede ver los cambios antes de aplicarlos.
Visual Studio no tiene en cuenta el flujo de control en el código. Si usa un identificador antes de que la definición auxiliar esté presente en el código, como una instrucción
import
, Visual Studio seguirá procesando el identificador tal como se usa. Visual Studio espera encontrar definiciones auxiliares para identificadores antes de realizar llamadas y asignaciones.Visual Studio omite todas las instrucciones de importación
from __future__
. Estas instrucciones son importaciones realizadas dentro de una definición de clase o mediante instruccionesfrom ... import *
.