Refatoração do Visual Studio:Remover método
-
08-06-2019 - |
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.
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:
- renomeie o método ComputeResult para ComputeResultX
- renomeie o método DoSomething para ComputeResult
- remova o método DoSomething (que agora é ComputeResult)
- 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):
- Crie o novo método
- Remova o corpo do método antigo, altere-o para chamar o novo método
- 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
- Marque o método antigo como [Obsoleto] (chamadas para ele agora aparecerão como avisos durante a construção)
- 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