Рефакторинг кода Python в Visual Studio
Повторное использованием существующего кода и обновления кода являются общими задачами для разработчиков. Возможно, потребуется рефакторинг существующего кода для другой цели и сэкономить время, не записав весь новый код. Может потребоваться очистить код, чтобы удалить неиспользуемые элементы или обновить импорты и методы, чтобы они были актуальны с последними версиями.
Visual Studio предоставляет несколько команд для автоматического преобразования и очистки исходного кода Python:
- Переименование изменяет имя выбранного класса, метода или переменной.
- Добавить инструкцию import — предоставляет смарт-тег для добавления отсутствующей команды импорта.
- Удаление неиспользуемых импортов удаляет неиспользуемые импорты.
Необходимые компоненты
- Visual Studio. Чтобы установить продукт, выполните действия, описанные в разделе "Установка Visual Studio".
- Доступ к проекту кода Python с существующим кодом.
Переименование класса, метода или переменной
Команду "Переименовать" можно использовать для изменения имени определенного идентификатора, включая класс, метод или переменную. Visual Studio поддерживает обновление всех экземпляров идентификатора или только указанных экземпляров.
Ниже показано, как использовать команду "Переименовать " в коде.
В коде щелкните правой кнопкой мыши идентификатор, который нужно переименовать, и выберите "Переименовать". Вы также можете поместить курсор на идентификатор и выбрать изменить>рефакторинг>переименования в меню или использовать сочетание клавиш F2.
В диалоговом окне переименования введите новое имя идентификатора и нажмите кнопку ОК:
В следующем диалоговом окне выберите файлы и экземпляры в коде, которые должны использовать новое имя. Вы можете выбрать отдельный экземпляр для предварительного просмотра конкретных изменений:
Нажмите Применить, чтобы внести изменения в файлы исходного кода.
В коде щелкните правой кнопкой мыши идентификатор, который нужно переименовать, и выберите "Переименовать". Вы также можете поместить курсор на идентификатор и выбрать пункт "Изменить>рефакторинг>переименования" в меню или использовать сочетание клавиш CTRL+R.
В диалоговом окне "Переименовать" введите новое имя идентификатора, за которым следует ввод:
Добавление инструкции импорта
Если в коде есть идентификаторы, отсутствующие определения или вспомогательные сведения о типе, Visual Studio поможет устранить проблему. Когда вы помещаете курсор на идентификатор, который не содержит сведений, Visual Studio отображает смарт-тег (лампочку) слева от кода. Тег перечисляет команды для добавления необходимых import
или from ... import
инструкций для соответствующего идентификатора.
Ниже показано, как работать с смарт-тегом для добавления импорта в код.
В коде поместите курсор на идентификатор, для которого Visual Studio отображает смарт-тег (лампочка). В этом примере смарт-тег отображается для вызова математического модуля:
В меню смарт-тегов выберите команду, чтобы добавить необходимые сведения о модуле или типе в файл кода. В этом примере выбрана команда для добавления инструкции
import math
.Visual Studio предоставляет завершения
import
для модулей и пакетов верхнего уровня в текущем проекте и стандартной библиотеке. Visual Studio также предлагаетfrom ... import
завершения для вложенных модулей и подпакетов и элементов модуля. В эти завершения входят функции, классы и экспортированные данные.После выбора параметра убедитесь, что в файл внесены ожидаемые изменения.
Visual Studio добавляет инструкцию
import
в верхней части файла кода после других импортов или в существующуюfrom ... import
инструкцию, если тот же модуль уже импортирован. В этом примереimport math
инструкция добавляется в верхней части файла после другого импорта:
Visual Studio пытается отфильтровать элементы, которые не определены в модуле. Примером является модуль, импортированный в другой модуль, который не является дочерним элементом импортируемого модуля. Многие модули используют инструкцию import sys
, а не from xyz import sys
. Вы не видите завершения импорта sys
модуля из других модулей, даже если модули отсутствуют __all__
, который исключает sys
модуль.
Аналогичным образом Visual Studio фильтрует функции, импортированные из других модулей или встроенного пространства имен. Если модуль импортирует settrace
функцию из sys
модуля, то в теории можно импортировать функцию из этого модуля. Однако оптимальным подходом является использование инструкции import settrace from sys
напрямую, поэтому Visual Studio специально предлагает этот оператор.
Наконец, предположим, что модуль обычно исключается, но он имеет другие значения, включенные как имя, назначенное значением в модуле. Visual Studio по-прежнему исключает импорт. Это поведение предполагает, что значение не должно быть экспортировано, так как другой модуль определяет его. Другое назначение, скорее всего, будет фиктивным значением, которое также не экспортируется.
Удаление неиспользуемых инструкций import
При написании кода легко import
получить инструкции для модулей, которые не используются вообще. Так как Visual Studio анализирует код, он может автоматически определитьimport
, требуется ли оператор, посмотрев, используется ли импортированное имя в область после выполнения инструкции.
Ниже показано, как удалить неиспользуемые импорты в коде.
Щелкните правой кнопкой мыши в любом месте редактора и выберите пункт "Удалить импорт". Вы можете удалить импорт из всех областей или только текущую область.
Visual Studio определяет, есть ли в коде неиспользуемые модули и удаляет соответствующие
import
инструкции.После выбора параметра убедитесь, что ожидаемые изменения внесены в файл. В этом примере Visual Studio удаляет три неиспользуемых модуля: binascii, array и glob.
В коде поместите курсор на инструкцию
import
, для которой Visual Studio отображает смарт-тег (лампочка). В этом примере смарт-тег отображается для неиспользуемых модулей binascii, массива и глоба:Выберите параметр "Удалить все неиспользуемые импорты" или "Удалить неиспользуемый импорт", чтобы удалить только выбранный модуль.
После выбора параметра убедитесь, что изменения внесены в файл. В этом примере Visual Studio удаляет три неиспользуемых модуля: binascii, array и glob.
Рекомендации при использовании команд рефакторинга
Прежде чем использовать команды рефакторинга, ознакомьтесь со следующими рекомендациями.
После выполнения команды рефакторинга можно отменить изменения изменения с помощью команды "Изменить>отмену". Команда "Переименовать " предлагает функцию предварительной версии , чтобы вы могли видеть изменения перед их применением.
Visual Studio не учитывает поток управления в коде. Если вы используете идентификатор, прежде чем вспомогательное определение присутствует в коде, например
import
оператор, Visual Studio по-прежнему обрабатывает идентификатор в качестве используемого. Visual Studio ожидает найти вспомогательные определения идентификаторов перед вызовами и назначениями.Visual Studio игнорирует все
from __future__
инструкции импорта. Эти инструкции являются импортами, выполняемыми внутри определения класса или с помощьюfrom ... import *
инструкций.