Regla
Comprobación divisor antes de la .
División por cero provoca errores se y
debe evitar evitar con controles .
Idiomas admitidos: 45+Introducción
La división por cero provoca errores de tiempo de ejecución inmediatos en la mayoría de los lenguajes, lo que hace que las aplicaciones fallen sin una degradación elegante. La entrada de usuario, los valores calculados o los resultados de la base de datos pueden producir divisores cero de forma inesperada. Una única operación de división no verificada puede paralizar los servicios de producción cuando los datos de casos extremos desencadenan el error.
Por qué es importante
Estabilidad del sistema: La división por cero puede provocar el cierre inmediato de la aplicación en lenguajes como Java, C y Python. En producción, esto se traduce en solicitudes descartadas, transacciones interrumpidas e indisponibilidad del servicio. Incluso en JavaScript, donde la división por cero devuelve Infinito o NaN, estos valores se propagan a través de los cálculos, causando resultados incorrectos.
Integridad de los datos: Cuando se producen errores de división durante el procesamiento por lotes o en los pipelines de datos, se pueden escribir resultados parciales antes de la caída del sistema. Esto deja los datos en estados inconsistentes, lo que requiere una recuperación manual y puede corromper sistemas posteriores que dependen de datos completos.
Superficie de ataque: Los atacantes pueden diseñar intencionadamente entradas que produzcan divisores cero para bloquear servicios. Los endpoints de API que realizan cálculos sin validar los divisores se convierten en vectores de denegación de servicio. Una única solicitud maliciosa puede derribar todo el servicio.
Ejemplos de código
❌ No conforme:
function calculateAverageOrderValue(totalRevenue, orderCount) {
return totalRevenue / orderCount;
}
function calculateConversionRate(conversions, visitors) {
return (conversions / visitors) * 100;
}
Por qué es incorrecto: Ambas funciones fallan cuando el divisor es cero. calcularValorMedioPedido() falla cuando orderCount es 0, y calcularTasaConversion() falla cuando visitantes es 0. Estos escenarios son realistas: las nuevas empresas tienen cero pedidos, las campañas pueden tener cero visitantes.
✅ Conforme:
function calculateAverageOrderValue(totalRevenue, orderCount) {
if (orderCount === 0) {
return 0;
}
return totalRevenue / orderCount;
}
function calculateConversionRate(conversions, visitors) {
if (visitors === 0) {
return 0;
}
return (conversions / visitors) * 100;
}Por qué esto es importante: Las comprobaciones explícitas evitan fallos por división por cero. Las funciones devuelven valores predeterminados sensatos (cero) cuando la división no es posible. La aplicación sigue funcionando incluso con entradas de casos extremos, manteniendo la estabilidad y la disponibilidad.
Conclusión
Valide siempre los divisores antes de las operaciones de división. Devuelva valores predeterminados apropiados, lance errores descriptivos o gestione el caso de cero basándose en la lógica de negocio. Nunca asuma que los divisores serán distintos de cero, especialmente con entradas de usuario o datos externos.
.avif)
