image

Bolsas de estudo DIO PRO para acessar bootcamps ilimitados

Disponible sólo:

367 vacantes
Article image
Swellington Soares
Swellington Soares04/07/2025 04:32
Compartir
Microsoft Azure Cloud Native 2026Recomendado para tiMicrosoft Azure Cloud Native 2026

Clean Code: Escrevendo Código Limpo em Aplicações React

  • #React
  • #JavaScript

Resumo

Clean Code é um conjunto de princípios e boas práticas que visam tornar o código mais legível, manutenível e sustentável a longo prazo. Neste artigo, vamos explorar os fundamentos do Clean Code e como aplicá-los no contexto do desenvolvimento com React, cobrindo desde a estruturação de componentes até o gerenciamento de estado e nomeação de variáveis.

Introdução

Desenvolver software vai muito além de simplesmente “fazer funcionar”. À medida que aplicações crescem, a clareza e a organização do código tornam-se cruciais para garantir produtividade da equipe, facilidade de manutenção e redução de bugs. O conceito de Clean Code, popularizado por Robert C. Martin (Uncle Bob), defende exatamente isso: código que funciona e é fácil de entender, modificar e evoluir.

No ecossistema React — amplamente usado para construir interfaces modernas — o Clean Code não é apenas útil, mas essencial. Componentes reaproveitáveis, estados distribuídos, e a lógica entrelaçada com JSX tornam a disciplina de escrever código limpo um diferencial.

Fundamentos do Clean Code

Alguns dos princípios centrais de Clean Code são:

  • Nomeação clara e descritiva
  • Funções pequenas e com responsabilidade única
  • Evitar duplicação
  • Coesão e baixo acoplamento
  • Comentários somente quando necessários
  • Código autoexplicativo

Aplicando Clean Code no React

1. Componentes Pequenos e Coesos

Evite componentes monolíticos. Quebre grandes blocos em partes menores e reutilizáveis.

❌ Exemplo ruim:

const Dashboard = () => {
return (
  <div>
    <h1>Bem-vindo</h1>
    <input type="text" onChange={...} />
    <button onClick={...}>Salvar</button>
    {/* Vários elementos e lógica em um único componente */}
  </div>
);
};

✅ Exemplo limpo:

const Dashboard = () => {
return (
  <div>
    <Header />
    <UserForm />
    <SaveButton />
  </div>
);
};

2. Nomeação Significativa

Nomes devem expressar a intenção da variável, função ou componente.

const x = () => {
return <Btn onClick={y}>OK</Btn>;
};

const handleSaveUser = () => {
return <Button onClick={handleSaveUser}>Salvar</Button>;
};

3. Evite Comentários Desnecessários

Comentários devem complementar o entendimento, não substituir nomes ruins.

// Função que envia o formulário
function f1() { ... }

function submitContactForm() { ... }

4. Separação de Preocupações

Separe responsabilidades em arquivos ou diretórios distintos: componentes, hooks, serviços, utilitários, etc.

src/
├── components/
│   └── UserForm.jsx
├── hooks/
│   └── useFormValidation.js
├── services/
│   └── userService.js
├── utils/
│   └── formatDate.js

5. Hooks Customizados para Abstração

Quando lógica de estado ou efeitos colaterais se repetem, encapsule em hooks.

✅ Exemplo:

// hooks/useWindowSize.js
import { useState, useEffect } from 'react';

export function useWindowSize() {
const [size, setSize] = useState([window.innerWidth, window.innerHeight]);

useEffect(() => {
  const handleResize = () => setSize([window.innerWidth, window.innerHeight]);
  window.addEventListener("resize", handleResize);
  return () => window.removeEventListener("resize", handleResize);
}, []);

return size;
}

6. Evite Código Morto e Complexidade Desnecessária

Apague variáveis não utilizadas, lógicas que não são mais necessárias e deixe o código o mais enxuto possível.

const [data, setData] = useState(null);
// mas data nunca é usada

Remova ou reintroduza apenas quando necessário.

7. Tratamento de Erros de Forma Clara

Não ignore erros ou deixe blocos try/catch sem propósito.

try {
const response = await userService.saveUser(userData);
alert("Usuário salvo!");
} catch (error) {
console.error("Erro ao salvar usuário:", error);
alert("Erro ao salvar!");
}

Exemplo Prático

Imagine um formulário de cadastro de usuário.

Estrutura limpa:

// components/UserForm.jsx
import { useState } from 'react';
import { saveUser } from '../services/userService';

export const UserForm = () => {
const [name, setName] = useState('');

const handleSubmit = async () => {
  try {
    await saveUser({ name });
    alert('Usuário salvo!');
  } catch (e) {
    alert('Erro ao salvar usuário.');
  }
};

return (
  <form onSubmit={e => { e.preventDefault(); handleSubmit(); }}>
    <input value={name} onChange={e => setName(e.target.value)} placeholder="Nome" />
    <button type="submit">Salvar</button>
  </form>
);
};

// services/userService.js
export async function saveUser(user) {
const response = await fetch('/api/users', {
  method: 'POST',
  body: JSON.stringify(user),
  headers: { 'Content-Type': 'application/json' }
});

if (!response.ok) throw new Error('Erro ao salvar');

return response.json();
}

Conclusão

Aplicar Clean Code em React é uma prática que exige disciplina, mas traz ganhos enormes em legibilidade, manutenção e escalabilidade da aplicação. Escrever código limpo não é sobre “gastar mais tempo”, e sim sobre economizar o tempo de todos que vão manter o projeto no futuro — inclusive você mesmo.

Boas práticas como nomeação clara, componentes coesos, abstrações via hooks, separação por responsabilidade e código autoexplicativo são elementos-chave em qualquer projeto React profissional.

Referências

Compartir
Recomendado para ti
Akad - Fullstack Developer
Riachuelo - Cibersegurança
Microsoft Certification Challenge #5 - AZ-204
Comentarios (2)
Vicente Neto
Vicente Neto - 04/07/2025 12:38

Muito bom seu artigo! parabens

DIO Community
DIO Community - 04/07/2025 09:47

Swellington, o seu artigo sobre como escrever código limpo em React é realmente valioso! Você abordou muito bem os principais fundamentos do Clean Code, adaptados especificamente para o ecossistema React. A ênfase em boas práticas como a criação de componentes pequenos e reutilizáveis, a nomeação clara e significativa e a separação de responsabilidades faz toda a diferença na manutenção e escalabilidade das aplicações.

Admiro também o uso do conceito de hooks customizados para abstrair lógicas de estado repetitivas e a preocupação com o código enxuto e sem complexidade desnecessária. Esse tipo de abordagem vai melhorar a legibilidade e facilitar futuras mudanças no projeto.

Na sua experiência, qual desses princípios você acha mais desafiador de aplicar, especialmente para quem está começando com React?

Recomendado para tiMicrosoft Azure Cloud Native 2026