Décomposer une condition.
Vous avez une condition complexe (if-then/else ou switch).
Décomposez les parties compliquées de la condition en méthodes distinctes : la condition, le then et le else.
##Example
if (date.before(SUMMER_START) || date.after(SUMMER_END)) {
charge = quantity * winterRate + winterServiceCharge;
}
else {
charge = quantity * summerRate;
}if (isSummer(date)) {
charge = summerCharge(quantity);
}
else {
charge = winterCharge(quantity);
}##Why Refactor
Plus un morceau de code est long, plus il est difficile à comprendre. Les choses deviennent encore plus difficiles à comprendre lorsque le code est rempli de conditions :
-
Pendant que vous cherchez à comprendre ce que fait le code du bloc
then, vous oubliez quelle était la condition concernée. -
Pendant que vous analysez le
else, vous oubliez ce que fait le code duthen.
##Benefits
-
En extrayant le code conditionnel vers des méthodes clairement nommées, vous facilitez la vie de la personne qui maintiendra le code plus tard (comme vous, dans deux mois !).
-
Cette technique de refactorisation s'applique aussi aux expressions courtes dans les conditions. La chaîne
isSalaryDay()est bien plus jolie et descriptive que du code de comparaison de dates.
##How to Refactor
-
Extrayez la condition dans une méthode distincte via Extraire une méthode.
-
Répétez le processus pour les blocs
thenetelse.