menu

SHARKLABS

Validações em Javascript: Pare de sofrer e seja feliz!

/
/
Validações em Javascript: Pare de sofrer e seja feliz!
bookmark JavaScript access_time

Sofrimento

Você é daqueles programadores perfeccionistas? Você se sente mal quando seu código não fica bom? Eu também sou um desses!

Por um lado este sofrimento é algo que nos faz querer melhorar sempre. Por outro lado também pode nos deixar paranoicos buscando uma perfeição que talvez nunca virá. Então tome cuidado com isso, experiência própria.

Validações me causavam sofrimento

Sabe quando você precisa validar algo (pode ser um formulário) e basta um pequeno IF para validar tudo. Ótimo este é o cenário perfeito.

Porém nem sempre é assim, na maioria das vezes sua validação começa com um pequeno IF e termina com um IF-MONSTRO. É isso mesmo que você está pensando, aquele IF gigante que valida se a variável não é nula, se ela é o tipo desejado, se ela é do tamanho certo, se ela tem os conteúdos esperados e por aí vai...

Quando as validações começaram a me deixar feliz

Em junho de 2018 foi lançado uma biblioteca chamada v8n. Inicialmente pensei: "mais uma biblioteca Javascript que promete me ajudar e depois me traz mais problemas do que soluções".

Mas eu estava errado, a v8n apenas me trouxe várias soluções e fiquei impressionado com sua simplicidade.

Eu sinceramente acredito que as coisas precisam ser simples, quando algo é muito complexo significa que muita coisa pode ser melhorada.

Vamos falar um pouco da v8n

O nome v8n é oriundo do termo "validation", ou seja, "v + 8 caracteres + n". O nome é bem criativo e nos faz lembrar as bibliotecas de internacionalização, normalmente conhecido por i18n.

A v8n é biblioteca open source com código disponível no GitHub, clique aqui para acessá-lo. Seu código é bem estruturado e fácil de entender.

Além disso, a v8n tem uma página com uma documentação completa, clique aqui para acessá-la. Embora o autor seja brasileiro, a documentação está toda em inglês e isso é algo muito bom, pois estimula o compartilhamento para pessoas de outros países.

Vale lembrar que a v8n é compatível com NodeJS e com os navegadores mais populares.

Show me the code

Digamos que temos que validar uma variável string em Javascript, neste caso ela precisa ter:

  • No mínimo 5 caracteres
  • No máximo 10 caracteres
  • Os cinco primeiros caracteres devem ser "Hello"

A validação tradicional (usando somente os recursos oferecidos pelo Javascript) poderia ser desta maneira:

let mystring = 'Hello Word';
if (
  typeof mystring == 'string' &&
  mystring.length >= 5 &&
  mystring.length <= 10 &&
  mystring.substring(0, 5) == 'Hello'
) {
  console.log(mystring);
}

Essa mesma validação poderia ser feita com a v8n de uma forma mais simples:

let mystring = 'Hello Word';
if (v8n().string().minLength(5).maxLength(10).first('Hello').test(mystring)) {
  console.log(mystring);
}

Além da simplicidade, algo me deixa fascinado é facilidade de leitura do código. Isso é algo muito importante, uma vez que boa parte do tempo de um programador é gasto lendo códigos.

No site da v8n existe uma documentação bem detalhada do que pode ser validado. Mas caso isso não lhe atenda, você pode criar seus próprios validadores. O código fica desta forma:

v8n.extend({
  stringWithDateValue: () => (value) => /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/.test(value)
});

let mystring = '2018-08-01';
if (v8n().stringWithDateValue().test(mystring)) {
  console.log(mystring);
}

Agora seja feliz

Isso é apenas uma amostra do que é possível fazer com a v8n. Seu design de fácil compreensão diminui a curva de aprendizado e torna possível integrá-la ao seu aplicativo, independente se você usa Vue, React ou Angular.

Dúvidas ou sugestões é só entrar em contato. Abraço.

Autor
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." Martin Fowler