Refaktoryzacja kodu w języku Python w programie Visual Studio

Ponowne tworzenie istniejącego kodu i odświeżanie kodu to typowe zadania dla deweloperów. Możesz chcieć refaktoryzować istniejący kod w innym celu i zaoszczędzić czas, nie pisząc całego nowego kodu. Możesz wyczyścić kod, aby usunąć nieużywane elementy lub odświeżyć importy i metody, aby były aktualne w najnowszych wersjach.

Program Visual Studio udostępnia kilka poleceń, które ułatwiają automatyczne przekształcanie i czyszczenie kodu źródłowego języka Python:

Wymagania wstępne

  • Visual Studio. Aby zainstalować produkt, wykonaj kroki opisane w temacie Instalowanie programu Visual Studio.
  • Dostęp do projektu kodu w języku Python przy użyciu istniejącego kodu.

Zmienianie nazwy klasy, metody lub zmiennej

Możesz użyć polecenia Zmień nazwę, aby zmienić nazwę określonego identyfikatora, w tym klasę, metodę lub zmienną. Program Visual Studio obsługuje aktualizowanie wszystkich wystąpień identyfikatora lub tylko określonych wystąpień, które wskazujesz.

W poniższych krokach pokazano, jak użyć polecenia Rename w kodzie.

  1. W kodzie kliknij prawym przyciskiem myszy identyfikator, którego nazwę chcesz zmienić, a następnie wybierz polecenie Zmień nazwę. Możesz również umieścić karetki na identyfikatorze i wybrać pozycję Edytuj>zmianę nazwy refaktoryzacji>z menu lub użyć skrótu klawiaturowego F2.

  2. W oknie dialogowym Zmienianie nazwy wprowadź nową nazwę identyfikatora i wybierz przycisk OK:

    Screenshot that shows how to specify a different name for an identifier in Visual Studio 2019.

  3. W następnym oknie dialogowym wybierz pliki i wystąpienia w kodzie, które powinny używać nowej nazwy. Możesz wybrać pojedyncze wystąpienie, aby wyświetlić podgląd określonej zmiany:

    Screenshot that shows how to apply the new name to specific instances of an identifier and preview the changes in Visual Studio 2019.

  4. Wybierz pozycję Zastosuj , aby wprowadzić zmiany w plikach kodu źródłowego.

  1. W kodzie kliknij prawym przyciskiem myszy identyfikator, którego nazwę chcesz zmienić, a następnie wybierz polecenie Zmień nazwę. Możesz również umieścić karetki na identyfikatorze i wybrać pozycję Edytuj>zmianę nazwy refaktoryzacji>z menu lub użyć skrótu klawiaturowego Ctrl+R.

  2. W oknie dialogowym Zmienianie nazwy wpisz nową nazwę identyfikatora, a następnie wprowadź:

    Screenshot that shows how to specify a different name for an identifier in Visual Studio 2022.

Dodawanie instrukcji import

Jeśli w kodzie brakuje identyfikatorów lub pomocniczych informacji o typie, program Visual Studio może pomóc w rozwiązaniu problemu. W przypadku umieszczania karetki na identyfikatorze, który nie zawiera informacji, program Visual Studio wyświetla tag inteligentny (żarówka) po lewej stronie kodu. Tag wyświetla polecenia umożliwiające dodanie niezbędnych import instrukcji lub from ... import dla odpowiedniego identyfikatora.

W poniższych krokach pokazano, jak pracować z tagiem inteligentnym, aby dodać importy w kodzie.

  1. W kodzie umieść karetę na identyfikatorze, dla którego program Visual Studio wyświetla tag inteligentny (żarówka). W tym przykładzie tag inteligentny wyświetla wywołanie modułu matematycznych:

    Screenshot that shows the smart tag for an identifier that needs an import statement added in Visual Studio 2019.

    Screenshot that shows the smart tag for an identifier that needs an import statement added in Visual Studio 2022.

  2. W menu tagu inteligentnego wybierz polecenie , aby dodać niezbędny moduł lub wpisz informacje do pliku kodu. W tym przykładzie wybrano polecenie , aby dodać instrukcję import math .

    Program Visual Studio oferuje import uzupełnianie pakietów i modułów najwyższego poziomu w bieżącym projekcie i bibliotece standardowej. Program Visual Studio oferuje from ... import również uzupełnianie modułów podrzędnych i podpakietów oraz elementów członkowskich modułu. Ukończenia obejmują funkcje, klasy lub wyeksportowane dane.

  3. Po wybraniu opcji upewnij się, że oczekiwana zmiana zostanie wprowadzona do pliku.

    Program Visual Studio dodaje instrukcję import w górnej części pliku kodu po innych importach lub do istniejącej from ... import instrukcji, jeśli ten sam moduł został już zaimportowany. W tym przykładzie instrukcja import math jest dodawana w górnej części pliku po innych importach:

    Screenshot that shows the import statement added after running the command from the smart tag in Visual Studio 2019.

    Screenshot that shows the import statement added after running the command from the smart tag in Visual Studio 2022.

Program Visual Studio próbuje odfiltrować członków, które nie są zdefiniowane w module. Przykładem jest zaimportowany moduł do innego modułu, który nie jest elementem podrzędnym modułu importu. Wiele modułów używa instrukcji import sys , a nie from xyz import sys. Nie widzisz ukończenia importowania modułu sys z innych modułów, nawet jeśli w modułach brakuje __all__ elementu członkowskiego wykluczającego sys moduł.

Podobnie program Visual Studio filtruje funkcje importowane z innych modułów lub wbudowanej przestrzeni nazw. Jeśli moduł importuje settrace funkcję z modułu sys , teoretycznie możesz zaimportować funkcję z tego modułu. Najlepszym rozwiązaniem jest jednak bezpośrednie użycie instrukcji import settrace from sys , więc program Visual Studio oferuje tę instrukcję.

Na koniec załóżmy, że moduł jest zwykle wykluczony, ale zawiera inne wartości, które są dołączane jak nazwa przypisana z wartością w module. Program Visual Studio nadal wyklucza importowanie. To zachowanie zakłada, że wartość nie powinna być eksportowana, ponieważ definiuje go inny moduł. Innym przypisaniem może być fikcyjna wartość, która również nie jest eksportowana.

Usuń nieużywane importy

Podczas pisania kodu można łatwo użyć import instrukcji dla modułów, które w ogóle nie są używane. Ponieważ program Visual Studio analizuje kod, może automatycznie określić, czy instrukcja jest potrzebna, sprawdzając, czy import zaimportowana nazwa jest używana w zakresie po wystąpieniu instrukcji .

W poniższych krokach pokazano, jak usunąć nieużywane importy w kodzie.

  1. Użyj prawym przyciskiem myszy w dowolnym miejscu w edytorze i wybierz polecenie Usuń importy. Importowanie można usunąć ze wszystkich zakresów lub tylko bieżący zakres.

    Screenshot that shows how to access the Remove Imports menu in Visual Studio 2019.

    Program Visual Studio określa, czy w kodzie istnieją nieużywane moduły i usuwa odpowiednie import instrukcje.

  2. Po wybraniu opcji upewnij się, że oczekiwane zmiany zostaną wprowadzone w pliku. W tym przykładzie program Visual Studio usuwa trzy nieużywane moduły: binascii, array i glob.

    Screenshot that shows the results of using the Remove Imports command to remove unused modules from the code in Visual Studio 2019.

  1. W kodzie umieść karetę import na instrukcji, dla której program Visual Studio wyświetla tag inteligentny (żarówka). W tym przykładzie tag inteligentny jest wyświetlany dla nieużywanych modułów binascii, tablicy i glob:

    Screenshot that shows how to access options to remove unused imports in Visual Studio 2022.

  2. Wybierz opcję Usuń wszystkie nieużywane importy lub Usuń nieużywane importowanie, aby usunąć tylko wybrany moduł.

  3. Po wybraniu opcji upewnij się, że zmiany zostaną wprowadzone w pliku. W tym przykładzie program Visual Studio usuwa trzy nieużywane moduły: binascii, array i glob.

    Screenshot that shows the results of using the Remove all unused imports command in Visual Studio 2022.

Zagadnienia dotyczące używania poleceń refaktoryzacji

Przed użyciem poleceń refaktoryzacji zapoznaj się z poniższymi zagadnieniami.

  • Po uruchomieniu polecenia refaktoryzacji można przywrócić zmiany za pomocą polecenia Edytuj>cofnij. Polecenie Zmień nazwę oferuje funkcję w wersji zapoznawczej , dzięki czemu można zobaczyć zmiany przed ich zastosowaniem.

  • Program Visual Studio nie uwzględnia przepływu sterowania w kodzie. Jeśli używasz identyfikatora przed obecnością definicji pomocniczej w kodzie, takim jak import instrukcja, program Visual Studio nadal przetwarza identyfikator jako używany. Program Visual Studio oczekuje znalezienia definicji pomocniczych dla identyfikatorów przed wykonaniem wywołań i przypisań.

  • Program Visual Studio ignoruje wszystkie from __future__ instrukcje importowania. Te instrukcje to importy wykonywane wewnątrz definicji klasy lub za from ... import * pomocą instrukcji .