Descomponer Condicional.
Tienes un condicional complejo (if-then/else o switch).
Descompón las partes complicadas del condicional en métodos separados: la condición, then y 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
Cuanto más largo es un fragmento de código, más difícil es de entender. Las cosas se vuelven aún más difíciles de entender cuando el código está lleno de condiciones:
-
Mientras estás ocupado averiguando qué hace el código del bloque
then, olvidas cuál era la condición correspondiente. -
Mientras estás ocupado analizando el
else, olvidas qué hace el código delthen.
##Benefits
-
Al extraer el código condicional a métodos con nombres claros, le facilitas la vida a quien mantenga el código más adelante (¡como tú mismo, dentro de dos meses!).
-
Esta técnica de refactorización también es aplicable a expresiones cortas en las condiciones. La cadena
isSalaryDay()es mucho más bonita y descriptiva que el código para comparar fechas.
##How to Refactor
-
Extrae el condicional a un método separado mediante Extraer Método.
-
Repite el proceso para los bloques
thenyelse.