Menu

Validação e normalização de endereço: a diferença

Validação de endereço e normalização são operações distintas: uma confere a estrutura, a outra verifica se o endereço existe. Entenda o que cada uma garante.

Publicado em

  • validação
  • normalização
  • formulário

Validação de endereço e normalização costumam aparecer juntas na mesma conversa, mas resolvem problemas diferentes e oferecem garantias diferentes. Confundir as duas leva a formulários rígidos demais de um lado e a dados sujos do outro. Neste texto, separamos o que cada operação faz, mostramos onde estão os limites reais e explicamos como combinar as duas sem frustrar quem preenche.

O que é normalizar um endereço

Normalizar é padronizar a forma. O endereço que o usuário digitou continua sendo o mesmo endereço, mas passa a ser escrito de maneira consistente: espaços repetidos são reduzidos, a caixa do texto é ajustada conforme a convenção local, abreviações conhecidas são expandidas ou contraídas, e o código postal é reapresentado no formato do país.

É uma operação segura porque não julga o conteúdo. Se o usuário escreveu o nome da rua de um jeito um pouco diferente do oficial, a normalização vai deixar o valor mais bonito e mais fácil de comparar, mas não vai provar nada sobre a existência daquele endereço.

Um efeito colateral valioso da normalização é tornar a comparação de registros confiável. Duas entradas do mesmo endereço, escritas com espaçamento e caixa diferentes, passam a bater depois da normalização. Isso reduz duplicatas em bases de clientes.

O que a validação consegue garantir?

Menos do que a maioria imagina. A validação consegue verificar se os campos obrigatórios estão preenchidos, se o formato do código postal é compatível com o país, se a divisão administrativa informada existe e se ela combina com o código postal. Em alguns países que mantêm um cadastro oficial de endereços, consegue ir além e confirmar se um endereço específico existe.

O que ela não consegue, na maior parte do mundo, é afirmar que aquele endereço é real e entregável. Não existe um cadastro global, autoritativo e atualizado que reúna todos os endereços do planeta. Cada país organiza a própria base como quer, com cobertura diferente, granularidade diferente e regras de acesso diferentes.

O resultado prático é que a validação, no caso geral, produz uma conclusão do tipo “parece razoável”. Isso é útil — evita erros grosseiros e detecta inconsistências entre campos — mas não é a mesma coisa que confirmar a existência.

Por que não existe uma base mundial de endereços

Dois motivos bastam para explicar o vazio. O primeiro é que endereço não é um identificador global: ele é uma descrição local de um ponto, e a mesma casa pode ser descrita de formas distintas em sistemas diferentes. O segundo é que manter essa base seria caro e politicamente complexo, porque envolveria atualização contínua de dados que pertencem a administrações locais.

Existem iniciativas nacionais de padronização, e elas funcionam bem dentro do próprio território. É por isso que uma solução de validação costuma cobrir alguns países muito bem e o resto de forma superficial — e por isso é comum que a validação seja mais fraca justamente onde o formulário atende mais gente.

Um campo de texto resolve tudo?

Não. Esta é a tentação mais frequente em equipes iniciantes: juntar cidade, divisão e código postal em um único campo livre e chamar isso de validação. O campo único aceita qualquer coisa, não permite conferência entre partes e torna impossível montar formulários específicos por país.

O oposto também dá errado. Não existe expressão regular capaz de validar endereço de forma geral, porque o endereço não é um formato: é uma composição de componentes cuja validade depende de regras que variam por país. Uma expressão regular serve para checar um componente específico em um país específico, como o código postal daquele território.

O caminho intermediário é o que costuma funcionar: campos separados para os componentes que são consultados de verdade, texto livre para o que é apenas descritivo, e regras de verificação aplicadas por país.

Onde a validação deve ficar

Operação O que verifica Quando falha
Normalização forma, espaçamento, caixa, máscara quase nunca deve falhar
Validação de formato presença, tamanho, caracteres erro de digitação
Validação de coerência divisão e código postal combinam erro de digitação ou base desatualizada
Confirmação de existência o endereço existe mesmo depende de base oficial disponível

A ordem das linhas é também a ordem de execução recomendada: a normalização vem antes de qualquer verificação, e a confirmação de existência, quando existe, é a última etapa.

Testando o comportamento no gerador

No gerador de endereços, os componentes de um endereço saem coerentes entre si, o que permite testar a etapa de validação de coerência sem depender de uma base externa. Você consegue gerar um endereço do Canadá com o formato alfanumérico local e conferir se o seu validador aceita o padrão antes de recusar por engano.

Isso é especialmente útil para o caso mais traiçoeiro: aquele em que o formato está certo e a validação está errada. Sem exemplos realistas, esse bug passa despercebido, porque todo teste feito com dado inventado à mão confirma a regra que já estava escrita.

Para quem desenvolve: a ordem das operações

Uma sequência que costuma dar bom resultado:

  • Normalize primeiro, sempre. Muitos erros de validação desaparecem quando espaços extras e caixa são tratados.
  • Valide componente por componente, com regras por país. Não tente verificar o endereço inteiro de uma vez.
  • Diferencie erro de aviso. Formato inválido bloqueia; incoerência suspeita apenas alerta.
  • Permita que o usuário confirme o próprio endereço quando a validação automática falhar. Todo sistema de validação real tem falso negativo, e um cadastro bloqueado é pior do que um cadastro marcado para revisão.
  • Registre a decisão. Saber se um endereço foi aceito automaticamente, corrigido à mão ou marcado como suspeito é informação de suporte valiosa.
  • Lembre-se de repetir as verificações no servidor. Uma checagem que existe apenas no navegador não protege a base.

Deixe também a porta aberta para endereços que você não conhece. Um endereço novo, em uma rua recém-criada, precisa ser aceitável mesmo quando nenhuma base o reconhece ainda.

Próximos passos

Se o seu formulário hoje trata normalização e validação como a mesma etapa, separe as duas funções e veja quantas recusas indevidas vêm só da falta de normalização. Se você precisa de massa de teste para as duas etapas, gere exemplos no gerador de endereços e monte uma bateria que inclua formatos alfanuméricos, países sem código postal e endereços com sufixos opcionais.

Continue lendo

Artigos sobre Gerador de endereço falso