Ao desenvolver componentes, siga estas diretrizes:
-
Nomenclatura:
- Utilize kebab-case para nomes de arquivos e pastas.
- Use PascalCase para nomes de componentes e interfaces/tipos.
- Use camelCase para nomes de funções, variáveis e propriedades.
- Dê sentido ao arquivo, por exemplo se for um caso de uso nomeie o final como
-use-case.ts
-
- Exemplo:
get-animals-use-case.ts
- Exemplo:
- Implementações dentro da camada de
data
devem seguir o padrão deremote-
-
- Exemplo:
remote-get-animals-use-case.ts
- Exemplo:
-
Declarações:
- Declare funções de componentes e hooks usando
function
em vez deconst
. - Utilize
type
para tipagem TypeScript em vez deinterface
.
- Declare funções de componentes e hooks usando
-
Extensões de arquivo:
.tsx
para arquivos de componentes React..ts
para arquivos TypeScript puros..hook.ts
para arquivos de hooks personalizados..stories.tsx
para arquivos de Storybook.
-
Boas práticas:
- Mantenha funções pequenas e com uma única responsabilidade.
- Utilize nomes descritivos para funções, variáveis, propriedades e arquivos.
- Use bons e poucos comentários somente para explicar lógica complexa ou decisões de design não óbvias.
- Implemente tratamento de erros adequado, especialmente em operações assíncronas.
-
Estilização:
- Utilize TailwindCSS estilos de componentes.
- Mantenha a consistência com o design system do projeto.
-
Performance:
- Utilize
React.memo()
para componentes que não precisam re-renderizar frequentemente. - Utilize
React.useMemo()
para evitar cálculos caros em cada renderização. - Utilize
React.useCallback()
para evitar recriar funções em cada renderização. - Implemente lazy loading para componentes grandes ou raramente usados.
- Utilize
-
Acessibilidade:
- Siga as diretrizes WCAG para garantir que os componentes sejam acessíveis.
- Use atributos ARIA quando necessário.
- Crie uma pasta com o nome do componente em kebab-case (ex.:
nome-do-componente
). - Dentro da pasta, crie os seguintes arquivos:
nome-do-componente.tsx
: Contém o código do componente.index.ts
: Exporta o componente (export * from './nome-do-componente'
).nome-do-componente.hook.ts
: Contém a lógica e regras de negócio associadas ao componente (model no MVVM).nome-do-componente.stories.tsx
: Storybook stories para o componente, se aplicável.
nome-do-componente/
│
├── nome-do-componente.tsx
├── index.ts
├── nome-do-componente.hook.ts
├── nome-do-componente.stories.tsx (opcional)
- Use Zustand para estado global quando apropriado.
- Use React Context para compartilhar estado entre vários componentes.
- Inclua JSDoc para funções e componentes importantes. (Ajustes futuros)
- Mantenha um README.md atualizado na raiz do projeto com instruções de instalação, execução e contribuição.
- Faça commits frequentes, mensagens claras e descritivas.
- Utilize feature branches e pull requests para novas funcionalidades.
- Utilize a nomenclatura certa para o commit de acordo com o guia de convenções de commit
- Escreva testes unitários para lógica de negócios.
- Implemente testes de integração para fluxos importantes do usuário.
- Mantenha uma cobertura de testes adequada.
Esta estrutura e estas convenções visam:
- Manter a organização, legibilidade e consistência do código.
- Facilitar a manutenção e colaboração no projeto.
- Melhorar a performance e acessibilidade da aplicação.
- Garantir a qualidade do código através de testes e boas práticas.
- Promover a escalabilidade e sustentabilidade do projeto a longo prazo.