Pergunta

Existe algum suplemento do Visual Studio que possa fazer a refatoração do método remove?
Suponha que você tenha o seguinte método:

Result DoSomething(parameters)  
{  
    return ComputeResult(parameters);  
}  

Ou a variante onde o Resultado é nulo.

O objetivo da refatoração é substituir todas as chamadas para DoSomething por chamadas para ComputeResult ou a expressão que usa os parâmetros se ComputeResult não for uma chamada de método.

Foi útil?

Solução

Se bem entendi a pergunta, o Resharper chama esse 'método embutido' - Ctrl - R + EU

Outras dicas

Eu faria isso da maneira mais simples:

  1. renomeie o método ComputeResult para ComputeResultX
  2. renomeie o método DoSomething para ComputeResult
  3. remova o método DoSomething (que agora é ComputeResult)
  4. renomeie o método ComputeResultX de volta para ComputeResult

Talvez o VS mostre algum conflito por causa da última renomeação, mas ignore.

Por "renomear", quero dizer:sobrescreva o nome do método e depois use o menu suspenso (Shift+Alt+F10) e selecione "renomear".Ele substituirá todas as ocorrências pelo novo nome.

Existem alguns produtos disponíveis para adicionar opções extras de refatoração ao Visual Studio 2005 e 2008, alguns dos melhores são Refatore!Pró e Reafiador.

No que diz respeito ao método remove, há uma descrição no livro canônico Refactoring sobre como fazer isso de forma incremental.

Pessoalmente, sigo um padrão nesse sentido (suponha que a compilação e a execução de testes de unidade ocorram entre cada etapa):

  1. Crie o novo método
  2. Remova o corpo do método antigo, altere-o para chamar o novo método
  3. Procure todas as referências ao método antigo (clique com o botão direito no nome do método e selecione "Encontrar todas as referências"), altere-as para chamadas para o novo método
  4. Marque o método antigo como [Obsoleto] (chamadas para ele agora aparecerão como avisos durante a construção)
  5. Exclua o método antigo

Quando se trata de refatorar assim, experimente ReSharper.

Basta clicar com o botão direito no nome do método, clicar em "Encontrar usos" e refatorar até não encontrar nenhuma referência.

E como dlamblin mencionou, a versão mais recente do ReSharper tem a possibilidade de incorporar um método.Isso deve fazer exatamente o que você precisa.

ReSharper é definitivamente o plug-in do VS 2008 para refatoração.Entretanto, ele não faz essa forma de refatoração em uma única etapa;você terá que refatorar-> renomear DoSomething para ComputeResult e ignorar o conflito com o ComputeResult real.Em seguida, exclua a definição que era DoSomething.É quase um passo.

No entanto, talvez possa faça isso em um passo.Se eu li isso corretamente.

Você também pode clicar com o botão direito no nome do método e clicar em “Localizar todas as referências” no Visual Studio.

Eu pessoalmente faria apenas um CTRL + MUDANÇA + H para Find & Replace

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