"Olá de novo."
"Oi!"
"Hoje vou falar sobre refatoração. Refatorar é alterar o código de um projeto sem alterar sua funcionalidade."
"Mas como isso é possível?"
"Bom, nos casos mais simples, poderíamos renomear variáveis e/ou métodos. Afinal, mudar o nome de uma variável não vai fazer o programa funcionar diferente, vai?"
"Claro que não."
"Você também pode dividir métodos grandes em vários menores. "
"Você pode extrair trechos de código repetidos em um método separado. "
"Algumas funções podem ser declaradas estáticas e depois movidas para classes utilitárias."
"Mas esta é uma interpretação estreita da refatoração."
"Refatorar às vezes significa reescrever (melhorar) a arquitetura de um projeto sem adicionar novas funcionalidades. Isso é refatorar no sentido amplo do termo."
"O IntelliJ IDEA tornou-se o ambiente de desenvolvimento integrado (IDE) mais popular, especificamente porque foi o primeiro a introduzir ferramentas de refatoração muito poderosas."
"O que são essas ferramentas mágicas?"
Truque de mágica nº 1: altere o nome de um método.
"Imagine que seu código tem um método chamado de 100 a 500 lugares diferentes. Você decidiu alterar seu nome para algo mais compreensível. Digamos que seja run() e você deseja que seja runDownloadTaskAsync(). Com que rapidez você pode fazer aquilo?"
"Bem, primeiro você precisa alterar o nome do método, depois encontrar todos os locais no programa onde esse método é chamado e alterar o nome também."
"E como você encontraria esses lugares?"
"Eu apenas executava o programa e o IntelliJ IDEA me mostrava todos os lugares onde um método inexistente é chamado."
"Tudo bem. Mas agora suponha que todo método tenha um comentário explicativo (JavaDoc) que explica o que o método faz — e o antigo nome do método está escrito lá."
"Eu mudaria os comentários também."
"Mas também pode haver variáveis cujos nomes estão associados ao nome do método. Seria bom alterá-los também:"
Antes | Depois |
---|---|
|
|
"Sim, seria bom mudar os nomes dessas variáveis também. Não faria mal."
"Bem, tudo isso pode ser feito em apenas alguns segundos usando o IntelliJ IDEA!"
"Você coloca o cursor sobre o nome do método (ou clica nele com o mouse), depois pressiona Shift+F6 e simplesmente começa a digitar o nome do método desejado."
"Aqui está um exemplo de edição de um nome de método."
"Começar a editar:"
"Especifique um novo nome:"
"Simplesmente insira um novo nome, pressione enter e pronto. Este método será renomeado em todos os lugares em que for chamado no projeto."
"O IntelliJ IDEA também costuma perguntar se você deseja renomear nomes de variáveis e nomes de métodos nos comentários. Basta clicar em 'Sim' e tudo mudará."
"Além disso, se o projeto foi compilado antes dessa operação de refatoração, é garantido que será compilado após a refatoração."
"Parece muito promissor."
"A propósito, você pode alterar os nomes das variáveis da mesma forma. Depois de clicar em um nome, basta pressionar Shift+F6 — você pode inserir um novo nome e o IntelliJ alterará o nome da variável sempre que for usado. "
"Se a variável for um campo em uma classe e tiver um getter e um setter, os nomes do getter e do setter também serão alterados para corresponder ao novo nome da variável."
"Tentei usando variáveis. Tudo funciona exatamente como você disse, Ellie. A refatoração é incrível!"
"Você acha que a refatoração é tudo? A refatoração é um tópico tão amplo — ainda nem arranhamos a superfície."
"Uau. O que mais tem?"
Truque de mágica nº 2: Extraia uma variável.
"Às vezes, certas expressões são repetidas com tanta frequência no código que você desejará movê-las para uma variável separada. Por exemplo:"
public void printInfo(User user)
{
System.out.println(user.getProfile().getName());
System.out.println(user.getProfile().getAddress().getState());
System.out.println(user.getProfile().getAddress().getCity());
System.out.println(user.getProfile().getAddress().getStreet());
System.out.println(user.getProfile().getAddress().getHomeNumber());
}
public void printInfo(User user)
{
Address address = user.getProfile().getAddress();
System.out.println(user.getProfile().getName());
System.out.println(address.getState());
System.out.println(address.getCity());
System.out.println(address.getStreet());
System.out.println(address.getHomeNumber());
}
"Ah."
"E o código pode ser muito mais complicado, com muitas partes repetidas."
"Os programadores não escrevem dessa forma intencionalmente. Mas muitas vezes você precisará adicionar algo a um método, depois outra coisa - e com o tempo o número de repetições dispara."
"Ao criar uma variável separada, podemos dar a ela um nome adequado e melhorar a legibilidade do código."
"Por exemplo, no exemplo acima, talvez não estejamos falando sobre um endereço residencial. Talvez estejamos falando sobre o endereço de um contato de emergência. Então você poderia chamar essa variável de emergênciaContactAddress, em vez de apenas endereço. Então, um programador vendo este código pela primeira vez vai entender o que está acontecendo aqui."
"Sim, concordo. Adicionar essas variáveis faz sentido."
"Então como você faz isso?"
"Mover uma expressão para uma variável separada é muito simples."
Passo 1: Use o mouse para selecionar a expressão.
Passo 2: Pressione Ctrl+Alt+V
"Abre-se uma janela onde o IntelliJ IDEA nos pergunta se queremos substituir apenas a expressão selecionada ou todas as instâncias da expressão (4 ocorrências)?"
"Selecione a segunda opção para substituir todas as ocorrências (Substituir todas as 4 ocorrências)"
Passo 3: Pressione Enter.
"O IntelliJ IDEA solicitará que você insira um nome de variável. Ele também fará sua própria sugestão para o nome. Nada mal, hein?"
"Uh-huh. Certo. Também estávamos planejando nomear a variável 'endereço'. Como ela sabia?"
"Utilizando o nome do último método da expressão, que retorna um endereço. Assim, é provável que a variável seja utilizada para armazenar um endereço."
"Isso funcionou muito bem. Ótimas coisas, Ellie."
Truque de mágica nº 3: extraia o código em um método separado.
"Mas poderíamos ter feito outra coisa. Poderíamos ter declarado um novo método, por exemplo, printAddress (), e movido todo esse código para ele."
"Vamos tentar fazer isso."
Passo 1: Selecione as 4 linhas de código que usam a variável de endereço:
Passo 2: pressione Ctrl+Alt+M
"O IntelliJ IDEA determina quais variáveis o método precisará e sugere como deve ser. "A única coisa que falta é inserir um nome para o método."
Etapa 3: Digite printAddress como o nome do método e pressione Enter.
"Como você gosta disso?"
"É incrível. O IntelliJ IDEA não apenas extraiu o código em um método separado, mas também adicionou todas as variáveis necessárias. Além do mais, ele adivinhou todos os nomes corretamente."
GO TO FULL VERSION