DEV Community

Werliton Silva
Werliton Silva

Posted on • Edited on

This might save your React component from crashing

home

Eu, você, nós todos já fizemos isso (ou continuamos). True?

Olha esse trecho de código a seguir:

...
<h2>{user.name}</h2>
<img src={user.avatar} alt="Avatar" />
...
Enter fullscreen mode Exit fullscreen mode

Simples, inocente… e altamente perigoso.

Em ambientes reais, esse user provavelmente vem de uma API. E o que acontece quando a API falha, atrasa ou retorna um valor nulo?

💣 “Cannot read properties of undefined (reading ‘name’)”

bomba

🛡️ Programação defensiva na prática

Num projeto real, recebíamos dados de um usuário externo via API. Às vezes, o backend estava lento. Outras vezes, retornava incompleto. A solução?

Programação defensiva com TypeScript + Fallbacks:

defense

O que mudou?

  • Sem erros de runtime quando a API falha.
  • A interface continua funcionando , mesmo com dados incompletos.
  • Experiência do usuário protegida. Reputação da aplicação também.

📌 Algumas curiosidades nesse exemplo simples

  1. Tipagem : A definição de valores opcionais na tipagem vai ajudar a IDE a ti ajudar (linhas 4,5,9) ;
  2. Uso de FAIL FAST: Quanto mais cedo um usuário ou outro sistema for notificado que há um problema com o processamento de sua entrada, melhor ; (linha 14)
  3. Operador || : Para que a imagem não quebre, uma vez que esse operador não só valida quando user.avatar for null ou undefined , mas também quando for falsy — como “” (string vazia), 0, false, NaN. (linha 18)
  4. ?? (nullish coalescing operator): utiliza o texto default quando user.name for null ou undefined. (linha 19)

Conclusão

Assuma sempre que nada vai vir como o esperado (ou seja, não confie 100% no seu backend. srrsrs) — e seu código vai sobreviver ao caos da produção.

Recomendação de leitura de bolso

Curtiu? Arrocha um comments aí, sio.

Originally published at https://www.linkedin.com.

Top comments (0)