|Refactoriza: costo de estadía en hotelMedio
Ejercicio00:00

¿Quieres un reto mayor?

Resuelve en 10:00

info

Importante: Para que se registre el resultado tienes que iniciar sesión.

Refactoriza: costo de estadía en hotel

Medio100 pts·Refactorización
ruleRestricciones de Refactoring
  • radio_button_unchecked
    No uses números mágicos directamente en el código
  • radio_button_unchecked
    No uses variables de una sola letra
  • radio_button_unchecked
    Define al menos una constante en UPPER_SNAKE_CASE
  • radio_button_unchecked
    Extrae al menos una función auxiliar

Enunciado

Descripción

Se te entrega una función que calcula el costo total de una estadía en un hotel. La función recibe el número de noches, el tipo de habitación, si la estadía incluye fines de semana y el nivel de lealtad del cliente.

El código funciona, pero está lleno de malos olores: números mágicos, variables de una sola letra, condicionales anidados y toda la lógica mezclada en una sola función.

Tu tarea

Refactoriza la función calculateHotelStayCost para que:

  1. Elimine los números mágicos — define constantes con nombres descriptivos en UPPER_SNAKE_CASE
  2. Use nombres de variables descriptivos — nada de a, b, t, d, r, etc.
  3. Extraiga funciones auxiliares — al menos una función que ayude a calcular partes del costo
  4. Mantenga el mismo comportamiento — todos los casos de prueba deben seguir pasando

Reglas de negocio

  • Tipos de habitación: "standard" (80/noche), "deluxe" (150/noche), "suite" (250/noche)
  • Fin de semana agrega un 20% de recargo sobre el precio base
  • Nivel de lealtad aplica descuento: "silver" → 5%, "gold" → 10%, "platinum" → 15%
  • Si el número de noches es menor a 1, retorna -1
Restriccionesexpand_more
  • Dificultad: Medio
  • Completa todos los test cases para obtener los 100 puntos.
  • No modificar la línea export al final del archivo.
  • Se recomienda evitar el uso de inteligencia artificial para que realmente tú practiques los ejercicios.

Puedes usar console.log() para depurar. Los resultados aparecen en la Consola de salida, no en el navegador.

Inicia sesión para reaccionar
Inicia sesión para reaccionar
6 soluciones · 86% aceptación