Eseguire il refactoring del codice Python in Visual Studio
Il riutilizzo del codice esistente e l'aggiornamento del codice sono attività comuni per gli sviluppatori. È possibile effettuare il refactoring del codice esistente per un altro scopo e risparmiare tempo senza scrivere tutto il nuovo codice. È possibile pulire il codice per rimuovere gli elementi inutilizzati o aggiornare le importazioni e i metodi in modo che siano aggiornati con le versioni recenti.
Visual Studio offre diversi comandi che consentono di trasformare e pulire automaticamente il codice sorgente Python:
- La ridenominazione modifica il nome di una classe, di un metodo o di una variabile selezionata.
- L'aggiunta dell'importazione fornisce uno smart tag per aggiungere un'importazione mancante.
- Rimuovere le importazioni inutilizzate elimina le importazioni inutilizzate.
Prerequisiti
- Visual Studio. Per installare il prodotto, seguire la procedura descritta in Installare Visual Studio.
- Accesso a un progetto di codice Python con codice esistente.
Rinominare una classe, un metodo o una variabile
È possibile usare il comando Rinomina per modificare il nome di un identificatore specifico, tra cui una classe, un metodo o una variabile. Visual Studio supporta l'aggiornamento di tutte le istanze dell'identificatore o solo delle istanze specifiche indicate.
I passaggi seguenti illustrano come usare il comando Rinomina nel codice.
Nel codice fare clic con il pulsante destro del mouse sull'identificatore da rinominare e scegliere Rinomina. È anche possibile posizionare il cursore su un identificatore e selezionare Modifica>refactoring>Rinomina dal menu oppure usare il tasto di scelta rapida F2.
Nella finestra di dialogo Rinomina immettere il nuovo nome per l'identificatore e selezionare OK:
Nella finestra di dialogo successiva selezionare i file e le istanze nel codice che devono usare il nuovo nome. È possibile selezionare una singola istanza per visualizzare in anteprima la modifica specifica:
Selezionare Applica per apportare le modifiche nei file di codice sorgente.
Nel codice fare clic con il pulsante destro del mouse sull'identificatore da rinominare e scegliere Rinomina. È anche possibile posizionare il cursore su un identificatore e selezionare Modifica>refactoring>Rinomina dal menu oppure usare il tasto di scelta rapida CTRL+R.
Nella finestra di dialogo Rinomina digitare il nuovo nome per l'identificatore seguito da Invio:
Aggiungere un'istruzione import
Se nel codice sono presenti identificatori mancanti o informazioni sul tipo di supporto, Visual Studio può aiutare a risolvere il problema. Quando si posiziona il cursore su un identificatore che non contiene informazioni, Visual Studio mostra uno smart tag (lampadina) a sinistra del codice. Il tag elenca i comandi per aggiungere le istruzioni o from ... import
necessarie import
per l'identificatore corrispondente.
I passaggi seguenti illustrano come usare lo smart tag per aggiungere importazioni nel codice.
Nel codice posizionare il cursore su un identificatore per il quale Visual Studio visualizza lo smart tag (lampadina). In questo esempio, lo smart tag viene visualizzato per la chiamata al modulo matematico:
Nel menu smart tag selezionare il comando per aggiungere il modulo o le informazioni sul tipo necessarie al file di codice. In questo esempio viene selezionato il comando per aggiungere l'istruzione
import math
.Visual Studio offre la funzione di completamento di
import
per i pacchetti e i moduli di primo livello nel progetto corrente e nella libreria standard. Visual Studio offrefrom ... import
anche completamenti per sottomoduli e sottopacchetto e membri del modulo. I completamenti includono funzioni, classi o dati esportati.Dopo aver selezionato un'opzione, verificare che la modifica prevista venga apportata al file.
Visual Studio aggiunge l'istruzione all'inizio
import
del file di codice dopo altre importazioni o in un'istruzione esistentefrom ... import
se lo stesso modulo è già importato. In questo esempio l'istruzioneimport math
viene aggiunta all'inizio del file dopo le altre importazioni:
Visual Studio tenta di filtrare i membri non definiti in un modulo. Un esempio è quello di un modulo importato in un altro modulo che non è figlio del modulo di importazione. Molti moduli usano l'istruzione import sys
anziché from xyz import sys
. Non viene visualizzato un completamento per l'importazione del sys
modulo da altri moduli anche se manca un __all__
membro che esclude il sys
modulo.
Analogamente, Visual Studio filtra le funzioni importate da altri moduli o dallo spazio dei nomi predefinito. Se un modulo importa la settrace
funzione dal sys
modulo, in teoria, è possibile importare la funzione da tale modulo. Tuttavia, l'approccio migliore consiste nell'usare direttamente l'istruzione import settrace from sys
, quindi Visual Studio offre in modo specifico tale istruzione.
Si supponga infine che un modulo venga normalmente escluso, ma che contenga altri valori inclusi come un nome assegnato con un valore nel modulo. Visual Studio esclude comunque l'importazione. Questo comportamento presuppone che il valore non debba essere esportato perché un altro modulo lo definisce. È probabile che un'altra assegnazione sia un valore fittizio che non viene esportato.
Rimuovi importazioni
Quando si scrive codice, è facile finire con import
istruzioni per i moduli che non vengono usati affatto. Poiché Visual Studio analizza il codice, può determinare automaticamente se è necessaria un'istruzione import
esaminando se il nome importato viene usato all'interno dell'ambito dopo l'esecuzione dell'istruzione.
I passaggi seguenti illustrano come rimuovere le importazioni inutilizzate nel codice.
Usare il pulsante destro del mouse in un punto qualsiasi dell'editor e scegliere Rimuovi importazioni. È possibile rimuovere l'importazione da Tutti gli ambiti o solo dall'ambito corrente.
Visual Studio determina se nel codice sono presenti moduli inutilizzati e rimuove le istruzioni corrispondenti
import
.Dopo aver selezionato un'opzione, verificare che le modifiche previste vengano apportate al file. In questo esempio Visual Studio rimuove i tre moduli inutilizzati: binascii, array e glob.
Nel codice posizionare il cursore su un'istruzione
import
per la quale Visual Studio visualizza lo smart tag (lampadina). In questo esempio, lo smart tag viene visualizzato per i moduli inutilizzati binascii, array e glob:Selezionare l'opzione Rimuovi tutte le importazioni inutilizzate o Rimuovi importazione inutilizzata per rimuovere solo il modulo selezionato.
Dopo aver selezionato un'opzione, verificare che le modifiche vengano apportate al file. In questo esempio Visual Studio rimuove i tre moduli inutilizzati: binascii, array e glob.
Considerazioni sull'uso dei comandi di refactoring
Prima di usare i comandi di refactoring, esaminare le considerazioni seguenti.
Dopo aver eseguito un comando di refactoring, è possibile ripristinare le modifiche usando il comando Modifica>annulla . Il comando Rinomina offre una funzionalità di anteprima , in modo da poter visualizzare le modifiche prima che vengano applicate.
Visual Studio non tiene conto del flusso di controllo nel codice. Se si usa un identificatore prima che la definizione di supporto sia presente nel codice, ad esempio un'istruzione
import
, Visual Studio elabora comunque l'identificatore come usato. Visual Studio prevede di trovare definizioni di supporto per gli identificatori prima di effettuare chiamate e assegnazioni.Visual Studio ignora tutte le
from __future__
istruzioni import. Queste istruzioni sono importazioni eseguite all'interno di una definizione di classe o tramite istruzioni usingfrom ... import *
.
Contenuto correlato
- Edit Python code (Modificare il codice Python)
- Linting Python code (Linting Python code)