Logotipo de ConstructiCat
CodeBust.
Explorar la sección ▾

Sustituir algoritmo.

Problema

¿Quieres reemplazar un algoritmo existente por uno nuevo?

Solución

Reemplaza el cuerpo del método que implementa el algoritmo por un algoritmo nuevo.

##Ejemplo

Antes
String foundPerson(String[] people){
  for (int i = 0; i < people.length; i++) {
    if (people[i].equals("Don")){
      return "Don";
    }
    if (people[i].equals("John")){
      return "John";
    }
    if (people[i].equals("Kent")){
      return "Kent";
    }
  }
  return "";
}
Después
String foundPerson(String[] people){
  List<String> candidates =
    Arrays.asList("Don", "John", "Kent");
  for (int i=0; i < people.length; i++) {
    if (candidates.contains(people[i])) {
      return people[i];
    }
  }
  return "";
}

##Por qué refactorizar

  1. La refactorización gradual no es el único método para mejorar un programa. A veces un método está tan plagado de problemas que es más fácil derribarlo y empezar de cero. Y quizá hayas encontrado un algoritmo mucho más simple y eficiente. Si es así, simplemente debes reemplazar el algoritmo antiguo por el nuevo.

  2. Con el tiempo, tu algoritmo puede incorporarse a una biblioteca o framework muy conocidos y quieres deshacerte de tu implementación independiente para simplificar el mantenimiento.

  3. Los requisitos de tu programa pueden cambiar tanto que tu algoritmo existente no pueda aprovecharse para la tarea.

##Cómo refactorizar

  1. Asegúrate de haber simplificado el algoritmo existente todo lo posible. Mueve el código poco importante a otros métodos usando Extraer método. Cuantas menos piezas móviles tenga tu algoritmo, más fácil será reemplazarlo.

  2. Crea tu nuevo algoritmo en un método nuevo. Reemplaza el algoritmo antiguo por el nuevo y empieza a probar el programa.

  3. Si los resultados no coinciden, vuelve a la implementación antigua y compara los resultados. Identifica las causas de la discrepancia. Aunque la causa suele ser un error en el algoritmo antiguo, es más probable que se deba a algo que no funciona en el nuevo.

  4. Cuando todas las pruebas se completen con éxito, ¡elimina el algoritmo antiguo para siempre!