DEV Community

Tarcísio Giroldo
Tarcísio Giroldo

Posted on

Algumas boas práticas que utilizo diariamente

Desde 2019, minha jornada com React tem sido marcada por constantes descobertas de padrões e melhores práticas. É empolgante observar como a comunidade evolui, adotando práticas que otimizam o desenvolvimento. Claro, reconheço que as melhores práticas não são universais, variando entre empresas, mas são cruciais para a eficiência e manutenção do código.

Componentes

Priorize Componentes Funcionais

Ao tratar de componentes, a ênfase recai nos componentes funcionais. Com uma sintaxe mais simples e sem métodos de ciclo de vida ou construtores, eles promovem a clareza do código. Quando possível, proponha a refatoração de class components para functional components.

Exemplo de componente funcional:

const FunctionalComponent = () => {
  // lógica do componente
  return (
    // JSX
  );
};
Enter fullscreen mode Exit fullscreen mode

Exemplo de class component:

class ClassComponent extends React.Component {
  // lógica do componente
  render() {
    return (
      // JSX
    );
  }
}
Enter fullscreen mode Exit fullscreen mode

Não seja preguiçoso ao nomear seus componentes

A atribuição de nomes adequados aos componentes é fundamental. Utilize PascalCase para garantir consistência. Certifique-se de que seu ESLint aplique e faça cumprir essas regras. Coloque algum esforço nisso antes que seja tarde.

Evite Hardcoding em Filtros, Navegação e Listas

Nunca deixe itens hardcoded para filtros, navegação ou listas. Utilize constantes para esse fim e, se possível, agrupe todas em um único arquivo de constantes. Aproveite o método map() para facilitar a iteração em listas.

Comentários Estratégicos

Apesar da controvérsia em torno dos comentários, no contexto do React, onde paradigmas diferem, a prática de escrever comentários é valiosa. Comentários bem colocados podem fornecer insights cruciais sobre a lógica específica do React.

Adote JSX e TSX

Ao escrever componentes, adote JSX para React e TSX para TypeScript. Essa prática simplifica a identificação do tipo de arquivo e melhora a clareza do código.

Desestruture as Props

Desestruture as props do componente sempre que possível. Isso aprimora a legibilidade do código, a menos que seja crucial entender as diferenças entre o estado externo e interno do componente.

Exemplo de desestruturação de props:

const MyComponent = ({ prop1, prop2 }) => {
  // lógica do componente usando prop1 e prop2
  return (
    // JSX
  );
};
Enter fullscreen mode Exit fullscreen mode

Gerencie o Número de Props

O cuidado com o número de props é subjetivo, mas se um componente possui mais de 4 ou 5 props, considere se ele está assumindo responsabilidades demais. Evite um excesso de props, o que pode indicar a necessidade de refatoração.

Use Objetos em Vez de Primitivos

Ao passar props, considere usar objetos em vez de primitivos. Isso simplifica a desestruturação dentro do componente, evitando torná-lo verboso e confuso.

Essas práticas visam criar código React eficiente e de fácil manutenção. Lembre-se, adaptar as práticas às necessidades específicas do projeto é crucial.

// Passando primitivos como props 
<UserProfile name={user.name} surname={user.surname} email={user.email} taxDocument={user.taxDocument} />

// Utilizando objetos como props 
<UserProfile user={user} />
Enter fullscreen mode Exit fullscreen mode

Melhores Práticas Utilizando React e JavaScript

Pare de usar "var"!

Meio óbvio? Talvez não.

Use "const" e imutabilidade sempre que possível

Também meio óbvio

Mantenha ternários simples

No pior cenário, você tem dois ternários aninhados. Qualquer coisa mais longa deve ser uma instrução if ou switch por razões de legibilidade e facilidade de depuração.

// Ternários aninhados (a ser evitado)

const message =
  isMember ? "You are a member" : isVisitor ? "You are a visitor" : "Unknown status";

// Ternários simples

const displayMessage = isLoggedIn ? "Welcome back!" : "Please log in";

Enter fullscreen mode Exit fullscreen mode

Simplifique com o optional chaining

Elimine essas verificações aninhadas e use o operador "?".

// Passando primitivos como props 
<UserProfile name={user.name} surname={user.surname} email={user.email} taxDocument={user.taxDocument} />

// Utilizando objetos como props 
<UserProfile user={user} />
Enter fullscreen mode Exit fullscreen mode

Prefira template strings

É simples assim. As template strings permitem injetar valores na string e mantêm o formato, o que pode ser útil.

// Concatenação de strings tradicional 
const name = "John"; const greeting = "Hello, " + name + "! Welcome."; 

// Utilizando template string
const greetingTemplate = `Hello, ${name}! Welcome.`;
Enter fullscreen mode Exit fullscreen mode

Evite aninhar ou encadear loops

Quando você encadeia métodos de iteração ou aninha loops, está aumentando a complexidade do código, o que pode retardar as coisas posteriormente ou à medida que seus dados crescem. Embora algumas operações possam exigir isso, avalie sempre sua estratégia de loop para garantir que você não tenha loops desnecessários ou loops que possam ser combinados.

Tenha testes unitários

Falando em boas práticas, não podemos esquecer a importância dos testes unitários. O Jest e o React Testing Library são ferramentas valiosas para garantir que sua aplicação funcione conforme o esperado. O Jest é um framework de teste completo para JavaScript, enquanto o React Testing Library fornece utilitários para testar componentes React de maneira eficaz. Integre essas ferramentas em seu fluxo de trabalho para criar uma base sólida.

Top comments (1)

Collapse
 
olucascruz profile image
Lucas Cruz

Curti bastante o post uma prática que não fazia e partir dessa leitura irei melhorar é da parte de "Mantenha ternários simples"