devterview_$ iniciar simulação

Números e strings mágicos

FácilJúniorLegibilidade

Pergunta

Por que `if (status === 3)` ou `setTimeout(fn, 86400000)` são problemáticos, e qual o cuidado ao 'extrair pra constante'?

Resposta esperada

O `3` e o `86400000` não têm significado no ponto de uso — quem lê tem que descobrir (e pode errar) o que é status 3 ou por que aquele número de milissegundos. Extrair pra uma constante nomeada (`STATUS_APROVADO = 3`, `UM_DIA_MS = 24 * 60 * 60 * 1000`) dá nome ao valor e um lugar único pra mudar. Cuidados: (1) a constante tem que ter um nome que explique o CONCEITO, não o valor (`const TRES = 3` não ajuda); (2) não extrair valores que são genuinamente autoexplicativos no contexto (`array[0]`, `x * 2` pra dobrar, `i + 1`); (3) `86400000` calculado como `24 * 60 * 60 * 1000` já é bem mais legível que o literal, mesmo sem constante; (4) valores usados uma vez só, óbvios pelo nome da função, às vezes não precisam. O objetivo é significado, não uma regra de 'zero literais'.

Por que perguntam isso

Pergunta júnior/pleno. Sinal de bom senso: não virar dogmático ('zero literais') e nomear o conceito, não o número.

#numeros-magicos#constantes#legibilidade
publicidade

Relacionadas