|Refactoriza: nómina mensualDifícil
Ejercicio00:00

¿Quieres un reto mayor?

Resuelve en 15:00

info

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

Refactoriza: nómina mensual

Difícil200 pts·Refactorización

Enunciado

Contexto

Eres un desarrollador en una empresa de recursos humanos. El sistema de nómina fue escrito por alguien con prisa y tiene una función que mezcla demasiadas responsabilidades: calcula el salario bruto, aplica bonificaciones por categoría, determina el impuesto progresivo y finalmente retorna el salario neto.

Lo que debes hacer

Refactoriza la función calculate_monthly_salary para que sea legible, mantenible y bien estructurada:

  • Elimina los números mágicos — extrae constantes con nombres descriptivos en UPPER_SNAKE_CASE
  • Elimina las variables de una sola letra — usa nombres que comuniquen intención
  • Extrae funciones auxiliares — separa el cálculo del bruto, bono, impuesto y neto en funciones con responsabilidad única
  • Mantén exactamente el mismo comportamiento: mismas entradas, mismas salidas

Reglas de negocio

  • Si las horas o la tarifa son inválidas (≤ 0), retorna -1
  • Bonificación por categoría: "senior" → +20%, "mid" → +10%, "junior" → sin bono
  • Impuesto progresivo sobre el total (bruto + bono):
    • Si total > 5000 → 25%
    • Si total > 2000 → 15%
    • En otro caso → 8%
  • Retorna el salario neto redondeado a 2 decimales
Restriccionesexpand_more
  • Dificultad: Difícil
  • Completa todos los test cases para obtener los 200 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 print() para depurar. Los resultados aparecen en la Consola de salida, no en el navegador.

Inicia sesión para reaccionar
Inicia sesión para reaccionar