Regra
Verificar divisor antes de operações de divisão .
Divisão por zero causa falhas e e
deve ser evitadas com verificações .
Idiomas suportados: 45+Introdução
A divisão por zero causa erros de tempo de execução imediatos na maioria das linguagens, travando aplicativos sem degradação elegante. Entradas de usuário, valores calculados ou resultados de banco de dados podem produzir divisores zero inesperadamente. Uma única operação de divisão não verificada pode derrubar serviços em produção quando dados de caso de borda acionam o erro.
Por que isso importa
Estabilidade do sistema: A divisão por zero pode travar o aplicativo imediatamente em linguagens como Java, C e Python. Em produção, isso significa requisições perdidas, transações interrompidas e indisponibilidade do serviço. Mesmo em JavaScript, onde a divisão por zero retorna Infinito ou NaN, esses valores se propagam através de cálculos, causando resultados incorretos.
Integridade dos dados: Quando erros de divisão ocorrem durante o processamento em lote ou pipelines de dados, resultados parciais podem ser gravados antes da falha. Isso deixa os dados em estados inconsistentes, exigindo recuperação manual e potencialmente corrompendo sistemas a jusante que dependem de dados completos.
Superfície de ataque: Atacantes podem intencionalmente criar entradas que produzem divisores zero para derrubar serviços. Endpoints de API que realizam cálculos sem validar divisores tornam-se vetores de negação de serviço. Uma única requisição maliciosa pode derrubar todo o serviço.
Exemplos de código
❌ Não-conforme:
function calculateAverageOrderValue(totalRevenue, orderCount) {
return totalRevenue / orderCount;
}
function calculateConversionRate(conversions, visitors) {
return (conversions / visitors) * 100;
}
Por que está errado: Ambas as funções falham quando o divisor é zero. calculateAverageOrderValue() falha quando orderCount é 0, e calculateConversionRate() falha quando visitantes é 0. Esses cenários são realistas: novos negócios têm zero pedidos, campanhas podem ter zero visitantes.
✅ Compatível:
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 que isso importa: Verificações explícitas evitam falhas por divisão por zero. As funções retornam valores padrão sensatos (zero) quando a divisão não é possível. A aplicação continua funcionando mesmo com entradas de caso de borda, mantendo a estabilidade e a disponibilidade.
Conclusão
Sempre valide os divisores antes das operações de divisão. Retorne valores padrão apropriados, lance erros descritivos ou trate o caso de zero com base na lógica de negócios. Nunca presuma que os divisores serão diferentes de zero, especialmente com entrada do usuário ou dados externos.
.avif)
