Remplacer un paramètre par des méthodes explicites.
Une méthode est divisée en parties, chacune étant exécutée en fonction de la valeur d'un paramètre.
Extrayez les différentes parties de la méthode dans leurs propres méthodes et appelez-les à la place de la méthode d'origine.
##Example
void setValue(String name, int value) {
if (name.equals("height")) {
height = value;
return;
}
if (name.equals("width")) {
width = value;
return;
}
Assert.shouldNeverReachHere();
}void setHeight(int arg) {
height = arg;
}
void setWidth(int arg) {
width = arg;
}##Why Refactor
Une méthode contenant des variantes dépendant d'un paramètre est devenue massive. Du code non trivial s'exécute dans chaque branche et de nouvelles variantes sont ajoutées très rarement.
##Benefits
- Améliore la lisibilité du code. Il est bien plus facile de comprendre le but de
startEngine()que celui desetValue("engineEnabled", true).
##How to Refactor
-
Pour chaque variante de la méthode, créez une méthode distincte. Exécutez ces méthodes en fonction de la valeur d'un paramètre dans la méthode principale.
-
Trouvez tous les endroits où la méthode d'origine est appelée. À ces endroits, placez un appel à l'une des nouvelles variantes dépendant du paramètre.
-
Lorsqu'il ne reste plus aucun appel à la méthode d'origine, supprimez-la.