Umgestalten von Code in Visual Studio
Die Wiederverwendung von vorhandenem Code und das Aktualisieren von Code sind häufige Aufgaben für Entwickler. Möglicherweise möchten Sie vorhandenen Code zu einem anderen Zweck umgestalten und Zeit sparen, indem Sie nicht den gesamten neuen Code schreiben. Möglicherweise möchten Sie Ihren Code bereinigen, um nicht verwendete Elemente zu entfernen, oder Importe und Methoden aktualisieren, damit sie mit den neuesten Versionen auf dem aktuellen Stand sind.
Visual Studio bietet mehrere Befehle, mit denen Sie Ihren Python-Quellcode automatisch transformieren und bereinigen können:
- Mit Umbenennen wird der Name einer ausgewählten Klasse, Methode oder Variablen geändert.
- Import hinzufügen: Stellt ein Smarttag zum Hinzufügen eines fehlenden Imports bereit.
- Mit Nicht verwendete Importe entfernen werden nicht verwendete Importe entfernt.
Voraussetzungen
- Visual Studio. Führen Sie zum Installieren des Produkts die Schritte unter Installieren von Visual Studio aus.
- Zugriff auf ein Python-Codeprojekt mit vorhandenem Code
Umbenennen einer Klasse, Methode oder Variable
Sie können den Befehl „Umbenennen“ verwenden, um den Namen für einen bestimmten Bezeichner zu ändern, einschließlich einer Klasse, Methode oder Variablen. Visual Studio unterstützt das Aktualisieren aller Instanzen des Bezeichners oder nur die spezifischen Instanzen, die Sie angeben.
Die folgenden Schritte zeigen, wie Sie den Befehl Umbenennen in Ihrem Code verwenden.
Klicken Sie im Code mit der rechten Maustaste auf den Bezeichner, den Sie umbenennen möchten, und wählen Sie Umbenennen aus. Sie können das Caretzeichen auch auf einen Bezeichner setzen und im Menü Bearbeiten>Umgestalten>Umbenennen auswählen, oder das Tastaturkürzel F2 verwenden.
Geben Sie im Dialogfeld Umbenennen, das geöffnet wird, den neuen Namen für den Bezeichner ein, und wählen Sie OK aus:
Wählen Sie im nächsten Dialogfeld die Dateien und Instanzen in Ihrem Code aus, die den neuen Namen verwenden sollen. Sie können eine einzelne Instanz auswählen, um eine Vorschau der jeweiligen Änderung anzuzeigen:
Wählen Sie Anwenden aus, um die Änderungen für Ihre Quellcodedateien zu übernehmen.
Klicken Sie im Code mit der rechten Maustaste auf den Bezeichner, den Sie umbenennen möchten, und wählen Sie Umbenennen aus. Sie können das Caretzeichen auch auf einen Bezeichner setzen und im Menü Bearbeiten>Umgestalten>Umbenennen auswählen, oder die Tastenkombination STRG+R verwenden.
Geben Sie im Dialogfeld Umbenennen den neuen Namen für den Bezeichner ein, gefolgt von der Eingabetaste:
Hinzufügen einer Importanweisung
Wenn Ihr Code Bezeichner enthält, denen Definitionen oder unterstützende Typinformationen fehlen, kann Visual Studio Ihnen bei der Behebung des Problems helfen. Wenn Sie das Caretzeichen auf einen Bezeichner setzen, dem Informationen fehlen, zeigt Visual Studio links neben dem Code ein Smarttag (Glühbirne) an. Das Tag listet Befehle auf, um die erforderlichen import
- oder from ... import
- Anweisungen für den entsprechenden Bezeichner hinzuzufügen.
Die folgenden Schritte zeigen, wie Sie mit dem Smarttag arbeiten, um Importe in Ihrem Code hinzuzufügen.
Platzieren Sie in Ihrem Code das Caretzeichen auf einem Bezeichner, für den Visual Studio das Smarttag (Glühbirne) anzeigt. In diesem Beispiel wird das Smarttag für den Aufruf des mathematischen Moduls angezeigt:
Wählen Sie im Menü „Smarttag“ den Befehl aus, um der Codedatei die erforderlichen Modul- oder Typinformationen hinzuzufügen. In diesem Beispiel ist der Befehl zum Hinzufügen der
import math
-Anweisung ausgewählt.Visual Studio bietet
import
-Vervollständigungen für Pakete und Module auf oberster Ebene im aktuellen Projekt und der Standardbibliothek. Visual Studio bietet auchfrom ... import
-Vervollständigungen für Submodule und Subpakete sowie für Modulmember. Vervollständigungen umfassen Funktionen, Klassen oder exportierte Daten.Nachdem Sie eine Option ausgewählt haben, bestätigen Sie, dass die erwartete Änderung an Ihrer Datei vorgenommen wird.
Visual Studio fügt die
import
-Anweisung oben in Ihrer Codedatei nach anderen Importen oder in eine vorhandenefrom ... import
-Anweisung ein, wenn das gleiche Modul bereits importiert ist. In diesem Beispiel wird dieimport math
-Anweisung am Anfang der Datei nach den anderen Importen hinzugefügt:
Visual Studio versucht, Elemente herauszufiltern, die nicht in einem Modul definiert sind. Ein Beispiel ist ein Modul, das in ein anderes Modul importiert wird, das kein untergeordnetes Element des Importmoduls ist. Viele Module verwenden die import sys
-Anweisung anstelle von from xyz import sys
. Sie sehen keinen Abschluss für den Import des sys
-Moduls aus anderen Modulen, auch wenn in den Modulen ein __all__
-Member fehlt, der das sys
-Modul ausschließt.
Auf ähnliche Weise filtert Visual Studio Funktionen, die aus anderen Modulen oder aus dem integrierten Namespace importiert werden. Wenn ein Modul die Funktion settrace
aus dem sys
-Modul importiert, könnten Sie die Funktion theoretisch aus diesem Modul importieren. Der beste Ansatz besteht jedoch darin, die import settrace from sys
-Anweisung direkt zu verwenden, sodass Visual Studio diese Anweisung speziell anbietet.
Nehmen wir abschließend an, dass ein Modul normalerweise ausgeschlossen ist, aber andere Werte enthalten sind, z. B. ein Name, der einem Wert im Modul zugewiesen ist. Visual Studio schließt den Import weiterhin aus. Dieses Verhalten geht davon aus, dass der Wert nicht exportiert werden sollte, da er durch ein anderes Modul definiert ist. Bei einer anderen Zuweisung handelt es sich wahrscheinlich um einen Dummy-Wert, der ebenfalls nicht exportiert wird.
Nicht verwendete Importe entfernen
Beim Schreiben von Code entstehen leicht import
-Anweisungen für Module, die gar nicht verwendet werden. Visual Studio analysiert Ihren Code und kann daher automatisch ermitteln, ob eine import
-Anweisung benötigt wird. Dafür prüft Visual Studio, ob der importierte Name in dem Geltungsbereich verwendet wird, nachdem die Anweisung auftritt.
Die folgenden Schritte zeigen, wie Sie nicht verwendete Importe in Ihrem Code entfernen.
Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle im Editor, und wählen Sie Importe entfernen aus. Sie können den Import aus allen Bereichen oder nur aus dem aktuellen Bereich entfernen.
Visual Studio ermittelt, ob in Ihrem Code nicht verwendete Module vorhanden sind, und entfernt die entsprechenden
import
-Anweisungen.Nachdem Sie eine Option ausgewählt haben, bestätigen Sie, dass die erwarteten Änderungen an Ihrer Datei vorgenommen werden. In diesem Beispiel entfernt Visual Studio die drei nicht verwendeten Module: binascii, array und glob.
Platzieren Sie in Ihrem Code das Caretzeichen auf einer
import
-Anweisung, für die Visual Studio das Smarttag (Glühbirne) anzeigt. In diesem Beispiel wird das Smarttag für die nicht verwendeten Module binascii, array und glob angezeigt:Wählen Sie die Option Alle nicht verwendeten Importe entfernen oder Nicht verwendeten Import entfernen aus, um nur das ausgewählte Modul zu entfernen.
Nachdem Sie eine Option ausgewählt haben, bestätigen Sie die an Ihrer Datei vorgenommenen Änderungen. In diesem Beispiel entfernt Visual Studio die drei nicht verwendeten Module: binascii, array und glob.
Überlegungen bei der Verwendung von Umgestaltungsbefehlen
Bevor Sie die Umgestaltungsbefehle verwenden, prüfen Sie die folgenden Überlegungen.
Nachdem Sie einen Umgestaltungsbefehl ausgeführt haben, können Sie die Änderungen mit dem Befehl Bearbeiten>Rückgängig machen rückgängig machen. Der Befehl Umbenennen bietet ein Vorschau-Feature, sodass Sie Änderungen sehen können, bevor sie angewendet werden.
Visual Studio ist nicht für den Steuerungsfluss in Ihrem Code verantwortlich. Wenn Sie einen Bezeichner verwenden, bevor die unterstützende Definition im Code vorhanden ist, z. B. eine
import
-Anweisung, verarbeitet Visual Studio den Bezeichner weiterhin wie verwendet. Visual Studio erwartet, dass unterstützende Definitionen für Bezeichner gefunden werden, bevor Sie Aufrufe und Zuweisungen tätigen.Visual Studio ignoriert alle
from __future__
-Importanweisungen. Diese Anweisungen sind Importe, die innerhalb einer Klassendefinition oder mithilfe vonfrom ... import *
-Anweisungen ausgeführt werden.