Compartilhar via


Refatorar código Python no Visual Studio

Reutilização de código existente e código de atualização são tarefas comuns para desenvolvedores. Talvez você queira refatorar o código existente para outra finalidade e economizar tempo não escrevendo todo o novo código. Talvez você queira limpar seu código para remover itens não utilizados ou atualizar importações e métodos para que eles estejam atualizados com versões recentes.

O Visual Studio fornece vários comandos para ajudá-lo a transformar e limpar automaticamente o código-fonte do Python:

Pré-requisitos

  • Visual Studio. Para instalar o produto, siga as etapas em Instalar o Visual Studio.
  • Acesso a um projeto de código python com código existente.

Renomear uma classe, um método ou uma variável

Você pode usar o comando Renomear para alterar o nome de um identificador específico, incluindo uma classe, um método ou uma variável. O Visual Studio dá suporte à atualização de todas as instâncias do identificador ou apenas às instâncias específicas que você indicar.

As etapas a seguir mostram como usar o comando Renomear em seu código.

  1. Em seu código, clique com o botão direito do mouse no identificador que você deseja renomear e selecione Renomear. Você também pode colocar o cursor em um identificador e selecionar Editar>Refatorar>Renomear no menu, ou usar o atalho do teclado Ctrl+R.

  2. Na caixa de diálogo Renomear, digite o novo nome para o identificador seguido por Enter:

    Captura de tela que mostra como especificar um nome diferente para um identificador no Visual Studio 2022.

Adicionar uma instrução de importação

Se você tiver identificadores em seu código que estão faltando definições ou que dão suporte a informações de tipo, o Visual Studio poderá ajudá-lo a corrigir o problema. Quando você coloca o cursor em um identificador que não tem informações, o Visual Studio mostra um ícone inteligente (lâmpada) à esquerda do código. A marca lista os comandos para adicionar as declarações necessárias import ou from ... import para o identificador correspondente.

As etapas a seguir mostram como trabalhar com o "smart tag" para adicionar imports em seu código.

  1. Em seu código, coloque o cursor em um identificador para o qual o Visual Studio exibe a marca inteligente (lâmpada). Neste exemplo, a etiqueta inteligente é exibida para a chamada ao módulo de matemática:

    Captura de tela que mostra o smart tag para um identificador que precisa adicionar uma instrução de importação no Visual Studio 2022.

  2. No menu de marca inteligente, selecione o comando para adicionar o módulo ou as informações de tipo necessárias ao arquivo de código. Neste exemplo, o comando para adicionar a import math instrução é selecionado.

    O Visual Studio oferece conclusões para pacotes import e módulos de nível superior no projeto atual e na biblioteca padrão. O Visual Studio também oferece conclusões from ... import para submódulos e subpacotes e membros do módulo. As conclusões incluem funções, classes ou dados exportados.

  3. Depois de selecionar uma opção, confirme se a alteração esperada foi feita no arquivo.

    O Visual Studio adiciona a import instrução na parte superior do arquivo de código após outras importações ou em uma instrução existente from ... import se o mesmo módulo já estiver importado. Neste exemplo, a instrução import math é adicionada na parte superior do arquivo após as outras importações:

    Captura de tela que mostra a declaração de importação adicionada após a execução do comando a partir da tag inteligente no Visual Studio 2022.

O Visual Studio tenta filtrar membros que não estão definidos em um módulo. Um exemplo é como um módulo importado para outro módulo que não é filho do módulo de importação. Muitos módulos usam a import sys instrução em vez de from xyz import sys. Você não verá uma conclusão para importar o sys módulo de outros módulos, mesmo que os módulos estejam sem um __all__ membro que exclua o sys módulo.

Da mesma forma, o Visual Studio filtra funções importadas de outros módulos ou do namespace interno. Se um módulo importar a função settrace do módulo sys, você poderá, em teoria, importar a função desse módulo. No entanto, a melhor abordagem é usar a import settrace from sys instrução diretamente, portanto, o Visual Studio oferece especificamente essa instrução.

Por fim, suponha que um módulo seja normalmente excluído, mas ele tenha outros valores incluídos como um nome atribuído com um valor no módulo. O Visual Studio ainda exclui a importação. Esse comportamento pressupõe que o valor não deve ser exportado porque outro módulo o define. É provável que outra atribuição seja um valor fictício que também não seja exportado.

Remover importações não utilizados

Quando você escreve código, é fácil terminar com import declarações para módulos que não estão sendo usados. Como o Visual Studio analisa seu código, ele pode determinar automaticamente se uma instrução import é necessária examinando se o nome importado é usado dentro do escopo após a instrução ocorrer.

As etapas a seguir mostram como remover importações não utilizados em seu código.

  1. Em seu código, coloque o cursor em uma instrução import para a qual o Visual Studio exibe a marca inteligente (lâmpada). Neste exemplo, a tag inteligente é exibida para os módulos não utilizados binascii, array e glob.

    Captura de tela que mostra como acessar opções para remover importações não utilizados no Visual Studio 2022.

  2. Selecione a opção Remover todas as importações não utilizadas ou Remover a importação não utilizada para remover apenas o módulo selecionado.

  3. Depois de selecionar uma opção, confirme se as alterações são feitas no arquivo. Neste exemplo, o Visual Studio remove os três módulos não utilizados: binascii, matriz e glob.

    Captura de tela que mostra os resultados do uso do comando Remover todas as importações não usadas no Visual Studio 2022.

Considerações ao usar comandos de refatoração

Antes de usar os comandos de refatoração, examine as considerações a seguir.

  • Depois de executar um comando de refatoração, você pode reverter as alterações usando o comando Editar>Desfazer . O comando Renomear oferece um recurso de visualização , para que você possa ver as alterações antes que elas sejam aplicadas.

  • O Visual Studio não conta com o fluxo de controle em seu código. Se você usar um identificador antes que a definição de suporte esteja presente no código, como uma instrução import , o Visual Studio ainda processará o identificador conforme usado. O Visual Studio espera encontrar definições de suporte para identificadores antes de fazer chamadas e atribuições.

  • O Visual Studio ignora todas as from __future__ instruções de importação. Essas instruções são importações executadas dentro de uma definição de classe ou usando from ... import * instruções.