Règle
Vérifier diviseur avant division .
Division par zéro provoque des et et
doit être évités avec des .
Langues prises en charge : 45+Introduction
La division par zéro provoque des erreurs d'exécution immédiates dans la plupart des langages, faisant planter les applications sans dégradation gracieuse. Les entrées utilisateur, les valeurs calculées ou les résultats de base de données peuvent tous produire des diviseurs nuls de manière inattendue. Une seule opération de division non vérifiée peut faire tomber les services de production lorsque des données de cas limite déclenchent l'erreur.
Pourquoi c'est important
Stabilité du système : La division par zéro peut faire planter l'application immédiatement dans des langages comme Java, C et Python. En production, cela signifie des requêtes abandonnées, des transactions interrompues et une indisponibilité du service. Même en JavaScript où la division par zéro renvoie Infini ou NaN, ces valeurs se propagent à travers les calculs, entraînant des résultats incorrects.
Intégrité des données : Lorsque des erreurs de division se produisent lors du traitement par lots ou dans les pipelines de données, des résultats partiels peuvent être écrits avant le crash. Cela laisse les données dans des états incohérents, nécessitant une récupération manuelle et pouvant corrompre les systèmes en aval qui dépendent de données complètes.
Surface d'attaque : Les attaquants peuvent intentionnellement créer des entrées qui produisent des diviseurs nuls pour faire planter les services. Les points d'accès API qui effectuent des calculs sans valider les diviseurs deviennent des vecteurs de déni de service. Une seule requête malveillante peut faire tomber l'ensemble du service.
Exemples de code
❌ Non conforme :
function calculateAverageOrderValue(totalRevenue, orderCount) {
return totalRevenue / orderCount;
}
function calculateConversionRate(conversions, visitors) {
return (conversions / visitors) * 100;
}
Pourquoi c'est incorrect : Les deux fonctions plantent lorsque le diviseur est zéro. calculateAverageOrderValue() échoue lorsque orderCount est 0, et calculateConversionRate() échoue lorsque visiteurs est 0. Ces scénarios sont réalistes : les nouvelles entreprises ont zéro commande, les campagnes peuvent avoir zéro visiteur.
✅ 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;
}Pourquoi c'est important : Des vérifications explicites évitent les plantages dus à une division par zéro. Les fonctions renvoient des valeurs par défaut sensées (zéro) lorsque la division n'est pas possible. L'application continue de fonctionner même avec des entrées de cas limites, maintenant ainsi sa stabilité et sa disponibilité.
Conclusion
Validez toujours les diviseurs avant les opérations de division. Retournez des valeurs par défaut appropriées, lancez des erreurs descriptives ou gérez le cas de zéro en fonction de la logique métier. Ne supposez jamais que les diviseurs seront non nuls, surtout avec les entrées utilisateur ou les données externes.

