Logotipo do ConstructiCat
CodeBust.
Explorar a seção ▾

Dividir Variável Temporária.

Problema

Você tem uma variável local usada para armazenar diversos valores intermediários dentro de um método (exceto variáveis de laço).

Solução

Use variáveis diferentes para valores diferentes. Cada variável deve ser responsável por apenas uma coisa em particular.

##Exemplo

Antes
double temp = 2 * (height + width);
System.out.println(temp);
temp = height * width;
System.out.println(temp);
Depois
final double perimeter = 2 * (height + width);
System.out.println(perimeter);
final double area = height * width;
System.out.println(area);

##Por que refatorar

Se você economiza no número de variáveis dentro de uma função e as reutiliza para diversos fins não relacionados, com certeza vai enfrentar problemas assim que precisar fazer alterações no código que contém essas variáveis. Você terá que reverificar cada uso da variável para garantir que os valores corretos sejam utilizados.

##Benefícios

  • Cada componente do código do programa deve ser responsável por uma única coisa. Isso facilita muito a manutenção do código, pois você pode substituir qualquer coisa em particular sem medo de efeitos indesejados.

  • O código fica mais legível. Se uma variável foi criada há muito tempo, às pressas, provavelmente tem um nome que não explica nada: k, a2, value etc. Mas você pode corrigir essa situação dando às novas variáveis nomes compreensíveis e autoexplicativos. Esses nomes podem ser algo como customerTaxValue, cityUnemploymentRate, clientSalutationString e assim por diante.

  • Esta técnica de refatoração é útil se você prevê usar Extrair Método mais adiante.

##Como refatorar

  1. Encontre o primeiro lugar no código em que a variável recebe um valor. Aqui você deve renomear a variável com um nome que corresponda ao valor que está sendo atribuído.

  2. Use o novo nome no lugar do antigo nos pontos em que esse valor da variável é utilizado.

  3. Repita conforme necessário para os lugares em que a variável recebe um valor diferente.