Saltar al contenido principal
Codigo Heroe
Tarea anterior
Funciones13/19
A la lista de tareas
  1. 1. Cálculo de millas con variables
  2. 2. Condición para vuelos largos
  3. 3. Reutilizar variables sin declararlas de nuevo
  4. 4. Crear una función
  5. 5. Llamar a una función
  6. 6. Parámetros y argumentos
  7. 7. Orden de los argumentos
  8. 8. Devolver un valor con return
  9. 9. Parámetros booleanos
  10. 10. Guardar el resultado en una variable
  11. 11. Salida anticipada con return
  12. 12. Simplificar el cálculo con una variable
  13. 13. Agregar una condición al cálculo
  14. 14. Llamar a una función desde otra
  15. 15. Agregar un parámetro y redondear el resultado
  16. 16. Devolver y usar la cantidad de vuelos
  17. 17. Reutilizar los resultados de una función
  18. 18. Comparar los resultados
  19. 19. Llamar a funciones dentro de un ciclo
Siguiente tarea
  • Matriz de skills
  • Cursos
  • Registro
  • Iniciar sesión

Loading…
En unos segundos, estará listo.

  • Teoría
  • Teoría

Agregar una condición al cálculo

Terminamos el segundo paso de la refactorización. La consola muestra los mismos resultados: 660 millas y 540 millas. La lógica sigue intacta y la refactorización fue un éxito.

Ahora que refactorizamos el código, agregar otro if a la función es muy sencillo:

let calculateMiles = function (distance, isBusinessClass) {
  let percent = 0.18;
  if (isBusinessClass) {
    percent += 0.04;
  }
  if (distance > 3500) {
    // Volvemos a cambiar el porcentaje
  }
  return distance * percent;
};

¿Qué pasaría si no creáramos la variable del porcentaje ni redujéramos la cantidad de salidas de la función?

El código de calculateMiles daría bastante miedo. Sería algo así:

let calculateMiles = function (distance, isBusinessClass) {
  if (isBusinessClass && distance > 3500) {
    return distance * 0.37;
  }
  if (isBusinessClass && distance <= 3500) {
    return distance * 0.22;
  }
  if (!isBusinessClass && distance > 3500) {
    return distance * 0.33;
  }
  return distance * 0.18;
};

O esta otra versión, que tampoco da menos miedo:

let calculateMiles = function (distance, isBusinessClass) {
  if (isBusinessClass) {
    if (distance > 3500) {
      return distance * 0.37;
    } else {
      return distance * 0.22;
    }
  } else {
    if (distance > 3500) {
      return distance * 0.33;
    } else {
      return distance * 0.18;
    }
  }
};

Y eso con solo dos condiciones que afectan al cálculo de millas. Imagina lo complicado que se volvería el código si aparecieran una o dos condiciones más, algo que ocurre con frecuencia en la práctica.

  • script.js
JavaScript
let calculateMiles = function (distance, isBusinessClass) { let percent = 0.18; if (isBusinessClass) { percent += 0.04; } return distance * percent; }; let milesEconom = calculateMiles(3000, false); let milesBusiness = calculateMiles(3000, true); console.log('En clase económica de Cupcakeflot acumularás ' + milesEconom + ' millas'); console.log('En clase ejecutiva de Cupcakeflot acumularás ' + milesBusiness + ' millas');
Consola

El código ha cambiado, haga clic en "Ejecutar" o active la ejecución automática.

Resultado de la ejecución

ObjetivosRealizado
0
    1. En la función calculateMiles, después de comprobar la clase del vuelo, agrega otra condición: si la distancia es mayor que 3500 km, aumenta percent en 0.15.
    2. Aumenta la distancia a 10000 en ambas llamadas a la función para comprobar que aumenta la cantidad de millas.
    Codigo Heroe

    © 2023-2026, codigoheroe.com