Substituir Parâmetro por Métodos Explícitos.
Problem
Um método é dividido em partes, cada uma das quais é executada dependendo do valor de um parâmetro.
Solution
Extraia as partes individuais do método para seus próprios métodos e chame-os em vez do método original.
##Example
Before
void setValue(String name, int value) {
if (name.equals("height")) {
height = value;
return;
}
if (name.equals("width")) {
width = value;
return;
}
Assert.shouldNeverReachHere();
}After
void setHeight(int arg) {
height = arg;
}
void setWidth(int arg) {
width = arg;
}##Why Refactor
Um método contendo variantes dependentes de parâmetro tornou-se enorme. Código não trivial é executado em cada ramo e novas variantes são adicionadas muito raramente.
##Benefits
- Melhora a legibilidade do código. É muito mais fácil entender o propósito de
startEngine()do que desetValue("engineEnabled", true).
##How to Refactor
-
Para cada variante do método, crie um método separado. Execute esses métodos com base no valor de um parâmetro no método principal.
-
Encontre todos os lugares onde o método original é chamado. Nesses lugares, coloque uma chamada para uma das novas variantes dependentes de parâmetro.
-
Quando não restar nenhuma chamada para o método original, exclua-o.