ConstructiCat Logo
CodeBust.
Browse section ▾

Sustituir algoritmo.

Problem

¿Quieres reemplazar un algoritmo existente por uno nuevo?

Solution

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

##Example

Before
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 "";
}
After
String foundPerson(String[] people){
  List candidates =
    Arrays.asList(new String[] {"Don", "John", "Kent"});
  for (int i=0; i < people.length; i++) {
    if (candidates.contains(people[i])) {
      return people[i];
    }
  }
  return "";
}

##Why Refactor

  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.

##How to Refactor

  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!