Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Повторное использованием существующего кода и обновления кода являются общими задачами для разработчиков. Возможно, потребуется рефакторинг существующего кода для другой цели и сэкономить время, не записав весь новый код. Может потребоваться очистить код, чтобы удалить неиспользуемые элементы или обновить импорты и методы, чтобы они были актуальны с последними версиями.
Visual Studio предоставляет несколько команд для автоматического преобразования и очистки исходного кода Python:
- Переименование изменяет имя выбранного класса, метода или переменной.
- Добавление импорта предоставляет смарт-тег для добавления отсутствующих импортов.
- Удаление неиспользуемых импортов удаляет неиспользуемые импорты.
Предпосылки
- Визуальная студия. Чтобы установить продукт, выполните действия, описанные в разделе "Установка Visual Studio".
- Доступ к проекту кода Python с существующим кодом.
Переименование класса, метода или переменной
Команду "Переименовать" можно использовать для изменения имени определенного идентификатора, включая класс, метод или переменную. Visual Studio поддерживает обновление всех экземпляров идентификатора или только указанных экземпляров.
Ниже показано, как использовать команду "Переименовать " в коде.
В коде щелкните правой кнопкой мыши идентификатор, который нужно переименовать, и выберите "Переименовать". Вы также можете поместить курсор на идентификатор и выбрать "Изменить>Рефакторинг>Переименовать" в меню или использовать сочетание клавиш Ctrl+R.
В диалоговом окне "Переименовать " введите новое имя идентификатора, за которым следует ввод:
Добавление инструкции импорта
Если в коде есть идентификаторы, отсутствующие определения или вспомогательные сведения о типе, Visual Studio поможет устранить проблему. Когда вы помещаете курсор на идентификатор, который не содержит сведений, Visual Studio отображает смарт-тег (лампочку) слева от кода. Тег перечисляет команды для добавления необходимых import или from ... import инструкций для соответствующего идентификатора.
Ниже показано, как работать с смарт-тегом для добавления импорта в код.
В коде поместите курсор на идентификатор, для которого Visual Studio отображает смарт-тег (лампочка). В этом примере смарт-тег отображается для вызова математического модуля:
В меню смарт-тегов выберите команду, чтобы добавить необходимые сведения о модуле или типе в файл кода. В этом примере выбрана команда для добавления инструкции
import math.Visual Studio предлагает
importдополнения для пакетов и модулей верхнего уровня в текущем проекте и стандартной библиотеке. Visual Studio также предлагает автозавершение для подпакетов, вложенных модулей и элементов модуля. К завершениям относятся функции, классы или экспортированные данные.После выбора параметра убедитесь, что в файл внесены ожидаемые изменения.
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 строками кода для модулей, которые не используются совсем. Так как Visual Studio анализирует код, она может автоматически определить, требуется ли import оператор, глядя на то, используется ли импортированное имя в области, следующей после выполнения оператора.
Ниже показано, как удалить неиспользуемые импорты в коде.
В коде поместите курсор на инструкцию
import, для которой Visual Studio отображает смарт-тег (лампочка). В этом примере смарт-тег отображается для неиспользуемых модулей binascii, массива и глоба:
Выберите параметр "Удалить все неиспользуемые импорты " или "Удалить неиспользуемый импорт ", чтобы удалить только выбранный модуль.
После выбора параметра убедитесь, что изменения внесены в файл. В этом примере Visual Studio удаляет три неиспользуемых модуля: binascii, array и glob.
Рекомендации при использовании команд рефакторинга
Прежде чем использовать команды рефакторинга, ознакомьтесь со следующими рекомендациями.
После выполнения команды рефакторинга можно отменить изменения с помощью команды «Изменить»>Отменить. Команда "Переименовать " предлагает функцию предварительной версии , чтобы вы могли видеть изменения перед их применением.
Visual Studio не учитывает поток управления в коде. Если вы используете идентификатор, прежде чем поддерживающее определение присутствует в коде, например оператор
import, Visual Studio по-прежнему обрабатывает идентификатор как используемый. Visual Studio ожидает найти вспомогательные определения идентификаторов перед вызовами и назначениями.Visual Studio игнорирует все
from __future__инструкции импорта. Эти инструкции являются импортами, выполняемыми внутри определения класса или с помощьюfrom ... import *инструкций.