Remplacer une variable temporaire par une requête.
Vous placez le résultat d'une expression dans une variable locale pour l'utiliser plus tard dans votre code.
Déplacez l'expression entière dans une méthode distincte et renvoyez-en le résultat. Interrogez la méthode au lieu d'utiliser une variable. Intégrez la nouvelle méthode dans d'autres méthodes si nécessaire.
##Example
double calculateTotal() {
double basePrice = quantity * itemPrice;
if (basePrice > 1000) {
return basePrice * 0.95;
}
else {
return basePrice * 0.98;
}
}double calculateTotal() {
if (basePrice() > 1000) {
return basePrice() * 0.95;
}
else {
return basePrice() * 0.98;
}
}
double basePrice() {
return quantity * itemPrice;
}##Why Refactor
Ce refactoring peut poser les bases de l'application d'Extraire une méthode sur une portion d'une méthode très longue.
La même expression peut parfois se retrouver dans d'autres méthodes également, ce qui est une raison d'envisager la création d'une méthode commune.
##Benefits
-
Lisibilité du code. Il est bien plus facile de comprendre le but de la méthode
getTax()que celui de la ligneorderPrice() * 0.2. -
Du code plus léger grâce à la déduplication, si la ligne remplacée est utilisée dans plusieurs méthodes.
##How to Refactor
-
Assurez-vous qu'une valeur est affectée à la variable une fois et une seule au sein de la méthode. Si ce n'est pas le cas, utilisez Scinder une variable temporaire pour garantir que la variable ne servira qu'à stocker le résultat de votre expression.
-
Utilisez Extraire une méthode pour placer l'expression concernée dans une nouvelle méthode. Assurez-vous que cette méthode ne fait que renvoyer une valeur et ne modifie pas l'état de l'objet. Si la méthode affecte l'état visible de l'objet, utilisez Séparer la requête du modificateur.
-
Remplacez la variable par une requête vers votre nouvelle méthode.