Pergunta

Eu tenho um monte de classes quero mudar o nome.Alguns deles têm nomes que são pequenos e que nome é reutilizado em outros nomes de classe, onde eu não quero que o nome alterado.A maioria dessas vidas em Python, mas também temos algumas código XML que faz referência a nomes de classe.

Simples de procurar e substituir apenas fica-me tão longe.No meu caso, eu quero mudar o nome AdminAction para AdminActionPlug e AdminActionLogger para AdminActionLoggerPlug, de modo que o primeiro busca-e-substitui seria também atingiu o segundo, de maneira errada.

Alguém tem experiência com Python ferramentas de refatoração ?Pontos de bônus se eles podem resolver nomes de classe de documentos XML também.

Foi útil?

Solução

Entretanto, eu tentei duas ferramentas que têm algum tipo de integração com o vim.

O primeiro é Corda, um python refatoração biblioteca que vem com um Vim (e o emacs) plug-in.Eu tentei por alguns renomeia, e que, definitivamente, funcionou como o esperado.Isso me permitiu visualizar a refatoração como um 'diff', o que é bom.É um pouco dirigido por texto, mas que está bem para mim, só leva mais tempo para aprender.

O segundo é Reparação De Bicicletas Homem o que eu acho que ganha pontos no nome.Também conecta o vim e o emacs.Ainda não joguei muito com ela ainda, mas eu me lembro tentando isso há muito tempo.

Não tenho jogado tanto com o suficiente, ou tentou mais tipos de refatoração, mas vou fazer mais alguns hackers com eles.

Outras dicas

Eu recomendo fortemente PyCharm - não só para as refatorações.Desde o primeiro PyCharm resposta foi postado aqui há alguns anos atrás a refatoração de suporte em PyCharm tem melhorado significativamente.

Python Refatorações disponível em PyCharm (última verificação 2016/07/27 em PyCharm 2016.2)

  • Mudar Assinatura
  • Converter para o Pacote Python/Módulo
  • Cópia
  • Extrato De Refatorações
  • Inline
  • Inverter Boolean
  • Fazer De Função De Nível Superior
  • Mover Refatorações
  • Empurre para baixo Membros
  • Puxe Membros até
  • Mudar O Nome De Refatorações
  • Eliminação Segura

XML refatorações (eu verifiquei no menu de contexto de um arquivo XML):

  • Mudar o nome
  • Mover
  • Cópia
  • Extrato de Subconsulta como CTE
  • Inline

Javascript refatorações:

  • Extrato de Parâmetro em JavaScript
  • Mudar Assinatura em JavaScript
  • Extrair Variável em JavaScript

WingIDE 4.0 (WingIDE é o meu python IDE de escolha) que irá suportar algumas refatorações, mas eu apenas tentei o mais recente beta, beta6, e...ainda há trabalho a ser feito.Retraia o Método funciona muito bem, mas Mudar o nome de Símbolo não.

Atualização:A versão 4.0 fixou todas as ferramentas de refatoração.Eles funcionam muito bem agora.

O IDE pode suportar refatorações !!Check-Eric, Eclipse, WingIDE têm de construir ferramentas para refatorações (Renomear inclusive).E que são muito seguros refatorações - se algo pode dar errado IDE não vai fazer ref.

Também considere a adição de alguns de teste de unidade para garantir que seu código não sofrem durante o refatorações.

PyCharm tem algumas refatorações recursos.

PYTHON REFATORAÇÃO

Mudar o nome refatoração permite executar código global de mudanças com segurança e instantaneamente.Mudanças locais dentro de um arquivo são executados no local.Refatorações de trabalho na planície Python e Django projetos.

Utilização Introduzir Variável/Campo/Constante e Inline Local para melhorar a estrutura de código dentro de um método, Extrair Método para quebrar mais métodos, Extrato Da Superclasse, Push-Up, Puxe Para Baixo e Mover para mover os métodos e classes.

Eu iria dar uma olhada no Bowler (https://pybowler.io).

É mais adequado para uso diretamente na linha de comando de corda e incentiva scripting (one-off scripts).

Você pode usar o sed para fazer isso.O truque é para lembrar que as expressões regulares podem reconhecer os limites da palavra.Isso funciona em todas as plataformas, desde que você obtenha as ferramentas, que no Windows é o Cygwin, Mac OS podem necessitar de instalar o dev tools, eu não tenho a certeza, e o Linux tem esta fora da caixa.Então, grep, xargs, e a sed deve fazer o truque, depois de 12 horas de leitura de páginas man e de tentativa e erro ;)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top