Partilhar via


Refatorar código Python no Visual Studio

Reutilizar código existente e atualizar código são tarefas comuns para os programadores. Podes querer refatorar código existente para outro propósito e poupar tempo não escrevendo todo o código novo. Podes querer limpar o teu código para remover itens não usados ou atualizar importações e métodos para que estejam atualizados com as versões mais recentes.

O Visual Studio fornece vários comandos para o ajudar a transformar e limpar automaticamente o seu código-fonte em 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, método ou variável

Pode usar o comando Renomear para alterar o nome de um identificador específico, incluindo uma classe, método ou variável. O Visual Studio suporta a atualização de todas as instâncias do identificador ou apenas das instâncias específicas que indica.

Os passos seguintes mostram como usar o comando Renomear no seu código.

  1. No seu código, clique com o botão direito no identificador que quer renomear e selecione Renomear. Também pode colocar o caret num identificador e selecionar Editar>Refatorar>Renomear dentro do menu, ou usar o atalho de teclado Ctrl+R.

  2. No diálogo Renomear , escreva o novo nome do identificador seguido de Enter:

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

Adicionar uma declaração de importação

Se tiver identificadores no seu código que não têm definições ou informações de tipo de suporte, o Visual Studio pode ajudá-lo a corrigir o problema. Quando colocas o caret num identificador que não tem informação, o Visual Studio mostra uma etiqueta inteligente (lâmpada) à esquerda do código. A etiqueta lista comandos para adicionar as instruções necessárias import ou from ... import para o identificador correspondente.

Os passos seguintes mostram como trabalhar com a etiqueta inteligente para adicionar importações no seu código.

  1. No seu código, coloque o caret num identificador para o qual o Visual Studio exibe a etiqueta inteligente (lâmpada). Neste exemplo, a smart tag é exibida durante a chamada ao módulo matemático:

    Captura de ecrã que mostra a etiqueta inteligente de um identificador que precisa de uma declaração de importação adicionada no Visual Studio 2022.

  2. No menu de etiquetas inteligentes, selecione o comando para adicionar a informação necessária do módulo ou tipo ao seu ficheiro de código. Neste exemplo, o comando para adicionar a import math instrução é selecionado.

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

  3. Depois de selecionar uma opção, confirme que a alteração esperada foi feita no seu ficheiro.

    O Visual Studio adiciona a import instrução no topo do teu ficheiro de código após outras importações, ou numa instrução existente from ... import se o mesmo módulo já estiver importado. Neste exemplo, a import math instrução é adicionada no topo do ficheiro após as outras importações:

    Captura de ecrã que mostra a instrução de importação adicionada após executar o comando a partir da etiqueta inteligente no Visual Studio 2022.

O Visual Studio tenta filtrar membros que não estão definidos num módulo. Um exemplo é um módulo importado para outro módulo que não é filho do módulo que o importa. Muitos módulos usam a import sys afirmação em vez de from xyz import sys. Não vês uma finalização para a importação do módulo sys de outros módulos, mesmo que faltem com um membro __all__ que exclua o módulo sys.

De forma semelhante, o Visual Studio filtra funções que são importadas de outros módulos ou do namespace incorporado. Se um módulo importar a função settrace do módulo sys, em teoria, pode importar a função deste módulo. No entanto, a melhor abordagem é usar a import settrace from sys declaração diretamente, por isso o Visual Studio oferece especificamente essa declaração.

Finalmente, suponha que um módulo é normalmente excluído, mas tem outros valores incluídos, como um nome atribuído a um valor no módulo. O Visual Studio continua a excluir a importação. Este comportamento assume que o valor não deve ser exportado porque outro módulo o define. É provável que uma outra atribuição seja um valor fictício que também não é exportado.

Remover importações não utilizadas

Quando escreves código, é fácil acabar com import instruções para módulos que não estão a ser usadas de todo. Como o Visual Studio analisa o seu código, pode determinar automaticamente se uma import instrução é necessária ao verificar se o nome importado é usado dentro do âmbito após a ocorrência da instrução.

Os passos seguintes mostram como remover importações não utilizadas no seu código.

  1. No seu código, coloque o caret numa import instrução para a qual o Visual Studio exibe a etiqueta inteligente (lâmpada). Neste exemplo, a smart tag mostra os módulos não utilizados binascii, array e glob:

    Captura de ecrã que mostra como aceder a opções para remover importações não utilizadas no Visual Studio 2022.

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

  3. Depois de selecionar uma opção, confirme que as alterações foram feitas ao seu ficheiro. Neste exemplo, o Visual Studio remove os três módulos não utilizados: binascii, array e glob.

    Captura de ecrã que mostra os resultados ao usar o comando Remover todas as importações não utilizadas no Visual Studio 2022.

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

Antes de usar os comandos de refatoração, reveja as seguintes considerações.

  • Depois de executares um comando de refatoração, podes reverter as alterações usando o comando Editar>Desfazer . O comando Renomear oferece uma funcionalidade de Pré-visualização , para que possa ver as alterações antes de serem aplicadas.

  • O Visual Studio não tem em conta o fluxo de controlo no teu código. Se usar um identificador antes de a definição de suporte estar presente no código, como uma import instrução, o Visual Studio continua a processar o identificador conforme utilizado. O Visual Studio espera encontrar definições de suporte para identificadores antes de fazer chamadas e atribuições.

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