Extrair Método.
Você tem um fragmento de código que pode ser agrupado.
Mova esse código para um novo método (ou função) separado e substitua o código antigo por uma chamada ao método.
##Example
void printOwing() {
printBanner();
// Imprime os detalhes.
System.out.println("name: " + name);
System.out.println("amount: " + getOutstanding());
}void printOwing() {
printBanner();
printDetails(getOutstanding());
}
void printDetails(double outstanding) {
System.out.println("name: " + name);
System.out.println("amount: " + outstanding);
}##Why Refactor
Quanto mais linhas houver em um método, mais difícil é descobrir o que o método faz. Essa é a principal razão para essa refatoração.
Além de eliminar arestas no seu código, extrair métodos também é um passo em muitas outras abordagens de refatoração.
##Benefits
-
Código mais legível! Certifique-se de dar ao novo método um nome que descreva o propósito do método:
createOrder(),renderCustomerInfo(), etc. -
Menos duplicação de código. Muitas vezes o código encontrado em um método pode ser reutilizado em outros lugares do seu programa. Assim você pode substituir as duplicatas por chamadas ao seu novo método.
-
Isola partes independentes do código, o que significa que erros são menos prováveis (como modificar a variável errada).
##How to Refactor
-
Crie um novo método e dê a ele um nome que torne seu propósito autoevidente.
-
Copie o fragmento de código relevante para o seu novo método. Apague o fragmento de seu local antigo e coloque ali, em vez dele, uma chamada ao novo método.
Encontre todas as variáveis usadas nesse fragmento de código. Se elas forem declaradas dentro do fragmento e não usadas fora dele, simplesmente deixe-as inalteradas—elas se tornarão variáveis locais do novo método.
-
Se as variáveis forem declaradas antes do código que você está extraindo, você precisará passar essas variáveis para os parâmetros do seu novo método a fim de usar os valores nelas contidos anteriormente. Às vezes é mais fácil se livrar dessas variáveis recorrendo a Substituir Variável Temporária por Consulta.
-
Se você notar que uma variável local muda de alguma forma no seu código extraído, isso pode significar que esse valor alterado será necessário mais tarde no seu método principal. Verifique duas vezes! E se for esse o caso, retorne o valor dessa variável para o método principal a fim de manter tudo funcionando.