Skip to main content
Este documento inclui as regras a seguir ao escrever código. O objetivo aqui é ter uma base de código consistente, fácil de ler e fácil de manter. Para isso, é melhor ser um pouco mais detalhado do que ser muito conciso. Sempre tenha em mente que as pessoas leem código mais frequentemente do que o escrevem, especialmente em um projeto de código aberto, onde qualquer um pode contribuir. Há muitas regras que não estão definidas aqui, mas que são verificadas automaticamente por linters.

React

Use componentes funcionais

Use sempre componentes funcionais TSX. Não use import padrão com const, pois é mais difícil de ler e mais difícil de importar com autocomplete.

Propriedades

Crie o tipo das propriedades e chame-o de (NomeDoComponente)Props se não houver necessidade de exportá-lo. Use destructuring de props.

Evite usar React.FC ou React.FunctionComponent para definir tipos de props

Proibição de Prop Spreading de Variável Única em Elementos JSX

Evite usar o espalhamento de props de variável única em elementos JSX, como {...props}. Essa prática muitas vezes resulta em código menos legível e mais difícil de manter, pois não está claro quais props o componente está recebendo.
Justificativa:
  • À primeira vista, é mais claro quais props o código passa, tornando mais fácil de entender e manter.
  • Ajuda a evitar o acoplamento forte entre componentes via suas props.
  • Ferramentas de linting tornam mais fácil identificar props mal digitadas ou não utilizadas quando você lista props explicitamente.

JavaScript

Use o operador de coalescência nula ??

Use encadeamento opcional ?.

TypeScript

Use type em vez de interface

Sempre use type em vez de interface, porque elas quase sempre se sobrepõem e type é mais flexível.

Use literais de string em vez de enums

Literals de string são o caminho a seguir para lidar com valores tipo enum no TypeScript. Eles são mais fáceis de estender com Pick e Omit, e oferecem uma melhor experiência de desenvolvedor, especialmente com autocomplete. Você pode ver porque o TypeScript recomenda evitar enums aqui.

GraphQL e bibliotecas internas

Você deve usar enums que o GraphQL codegen gera. É melhor usar um enum ao usar uma biblioteca interna, para que a biblioteca interna não precise expor um tipo literal de string que não está relacionado à API interna. Exemplo:

Estilização

Use StyledComponents

Estilize os componentes com Linaria styled.
Prefixe componentes estilizados com “Styled” para diferenciá-los de componentes “reais”.

Tematização

Utilizar o tema para a maioria da estilização dos componentes é a abordagem preferida.

Unidades de medida

Evite usar valores px ou rem diretamente dentro dos componentes estilizados. Os valores necessários geralmente já estão definidos no tema, por isso é recomendável fazer uso do tema para esses fins.

Cores

Evite introduzir novas cores; em vez disso, use a paleta existente do tema. Se houver uma situação em que a paleta não se alinhe, por favor, deixe um comentário para que a equipe possa corrigi-la.

Impor Importações Sem Tipo

Evite importações de tipo. Para impor esse padrão, uma regra do Oxlint verifica e relata quaisquer importações de tipos. Isso ajuda a manter a consistência e a legibilidade no código TypeScript.

Por Que Não Usar Importações de Tipo

  • Consistência: Ao evitar importações de tipo e usar uma única abordagem para importações de tipo e valor, a base de código permanece consistente em seu estilo de importação de módulo.
  • Legibilidade: Importações sem tipo melhoram a legibilidade do código, tornando claro quando você está importando valores ou tipos. Isso reduz a ambiguidade e facilita a compreensão do propósito dos símbolos importados.
  • Manutenção: Melhora a manutenibilidade da base de código porque os desenvolvedores podem identificar e localizar importações somente de tipo ao revisar ou modificar o código.

Regra do Oxlint

Uma regra do Oxlint, typescript/consistent-type-imports, aplica o padrão de não usar importações de tipos. Esta regra gerará erros ou avisos para qualquer violação de importação de tipo. Observe que esta regra trata especificamente de casos isolados onde importações de tipos não intencionais ocorrem. O próprio TypeScript desencoraja essa prática, conforme mencionado nas notas de lançamento do TypeScript 3.8. Na maioria das situações, não é necessário usar importações somente de tipo. Para garantir que seu código esteja em conformidade com essa regra, certifique-se de executar o Oxlint como parte do seu fluxo de trabalho de desenvolvimento.