Extraer método.
Tienes un fragmento de código que se puede agrupar.
Traslada este código a un nuevo método (o función) independiente y sustituye el código antiguo por una llamada al método.
##Example
void printOwing() {
printBanner();
// Imprimir detalles.
System.out.println("name: " + name);
System.out.println("amount: " + getOutstanding());
}void printOwing() {
printBanner();
printDetails(getOutstanding());
}
void printDetails(double outstanding) {
System.out.println("name: " + name);
System.out.println("amount: " + outstanding);
}##Why Refactor
Cuantas más líneas hay en un método, más difícil resulta entender qué hace ese método. Esta es la razón principal de esta refactorización.
Además de eliminar asperezas en tu código, extraer métodos es también un paso dentro de muchos otros enfoques de refactorización.
##Benefits
-
¡Código más legible! Asegúrate de dar al nuevo método un nombre que describa su propósito:
createOrder(),renderCustomerInfo(), etc. -
Menos duplicación de código. A menudo el código que se encuentra en un método puede reutilizarse en otros lugares de tu programa. Así puedes sustituir los duplicados por llamadas a tu nuevo método.
-
Aísla partes independientes del código, lo que hace que los errores sean menos probables (por ejemplo, que se modifique la variable equivocada).
##How to Refactor
-
Crea un nuevo método y nómbralo de forma que su propósito resulte evidente por sí mismo.
-
Copia el fragmento de código relevante a tu nuevo método. Elimina el fragmento de su ubicación antigua y coloca allí, en su lugar, una llamada al nuevo método.
Localiza todas las variables que se usan en este fragmento de código. Si se declaran dentro del fragmento y no se usan fuera de él, simplemente déjalas tal cual: se convertirán en variables locales del nuevo método.
-
Si las variables se declaran antes del código que estás extrayendo, tendrás que pasarlas como parámetros de tu nuevo método para poder usar los valores que contenían previamente. A veces es más fácil deshacerse de estas variables recurriendo a Reemplazar variable temporal por consulta.
-
Si observas que una variable local cambia de algún modo dentro del código extraído, puede significar que ese valor modificado se necesitará después en tu método principal. ¡Compruébalo bien! Y si efectivamente es así, devuelve el valor de esta variable al método principal para mantener todo funcionando.