Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Globo Aplausos Wiki de Melhores Práticas Globo Aplausos Wiki de Melhores Práticas
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Globo Aplausos
  • Globo Aplausos Wiki de Melhores PráticasGlobo Aplausos Wiki de Melhores Práticas
  • Wiki
  • Padrao_de_Codigo

Padrao_de_Codigo · Changes

Page history
Update Padrao_de_Codigo authored Nov 20, 2023 by Felipe Freitas Silva's avatar Felipe Freitas Silva
Show whitespace changes
Inline Side-by-side
Padrao_de_Codigo.md 0 → 100644
View page @ ca21ca01
# Melhores práticas de padrão de código
| [Home](home) | [AGES I](AGES_I) | [AGES II](AGES_II) | [AGES III](AGES_III) | [AGES IV](AGES_IV) | [**Padrão de Código**](padrao_de_codigo)
| :----------: | :-------------------------------: | :------------------: | :--------------: | :--------------------------: | :--------------------------: |
## Sumário
- [Introdução](#introdução)
- [Boas práticas gerais](#boas-práticas-gerais)
- [Boas práticas de git](#boas-práticas-de-git)
- [Boas práticas de banco de dados](#boas-práticas-de-banco-de-dados)
- [Boas práticas do back-end (Restful API)](#boas-práticas-do-back-end-restful-api)
- [Boas práticas do front-end](#boas-práticas-do-front-end)
- [Boas práticas de estilização](#boas-práticas-de-estilização)
## Introdução
Neste documento, você encontrará as melhores práticas de padrão de código que foram definidas para o projeto AGES. O objetivo deste documento é definir um padrão de código que deve ser seguido por todos os membros da AGES. Um padrão de código é um conjunto de regras que define como o código deve ser escrito. O padrão de código permite que os desenvolvedores escrevam código de maneira consistente e legível. O padrão de código também permite que os desenvolvedores mantenham o código de maneira fácil e eficiente. O padrão de código foi definido para o projeto AGES, mas pode ser usado e adaptado em qualquer projeto de software.
## Boas práticas gerais
- Utilize nomes de métodos e variáveis em inglês.
- Utilize nomes de métodos no infinitivo.
- Utilize nomes de variáveis no formato: `nomeDaVariavel`.
- Utilize nomes de constantes no formato: `NOME_DA_CONSTANTE`.
- Utilize nomes de rotas no formato: `/nomeDaRota`.
- Utilize o padrão DTO (Data Transfer Object) para transferir dados entre o back-end e o front-end.
- Escreva arquivos e funções pequenas, isto é, cada arquivo e função deve ter apenas uma responsabilidade.
- Pense em como o código pode ser reutilizado.
- Não repita código.
- Não deixe nenhum comentário no código, apesar de ajudar durante o desenvolvimento, é considerado uma má pratica manter comentários em códigos disponibilizados pela AGES.
## Boas práticas de git
- As descrições de tarefas mencionadas nos próximos items foram escritas em português.
- Utilize um padrão para os nomes de branches e commits, com o objetivo de facilitar a leitura e entendimento das branches e commits no gitlab.
- Tenha definido três categorias de branch:
- 1: main --> a main deve ser preservada apenas para a versão estável do programa
- 2: develop --> branch direcionada para o merge de todas as branches de categoria 3, onde será testado a integração das branches, e a criação das versões finais do projeto para cada sprint.
- 3: Padrão de branch utilizado no projeto:
- nome padrão para branches de features: feature/US-NúmeroDaUS-DescriçãoDaUS
- nome padrão para branches de fix: fix/US-NúmeroDaUS-DescriçãoDaUS
- nome padrão para branches que não contém US: NOUS/DescriçãoDaTarefa
- Para a mensagem de commit, descreva brevemente o que foi feito dentro dele, mantendo um padrão de escrita em português.
## Boas práticas de banco de dados
- Use nomes de tabelas em inglês no plural.
- Use nomes de colunas em inglês no plural.
- Use nomes de chaves estrangeiras no formato: `tabelaId`.
- Utilize os tipos de dados corretos para cada coluna. Por exemplo, ao invés de armazenar tudo como `VARCHAR`, utilize
- `INT` para números inteiros
- `FLOAT` para números decimais
- `DATE` para datas
- `TIME` para horários
- `DATETIME` para datas e horários
- `BOOLEAN` para valores booleanos
- Utilize `NOT NULL` para colunas que não podem ser nulas.
- Utilize `UNIQUE` para colunas que não podem ter valores duplicados.
- Se possível, utilize um valor padrão para colunas que podem ser nulas.
Apesar de não ser necessário, utilizar um ORM (Object-Relational Mapping) pode facilitar o desenvolvimento e manutenção do banco de dados.
Isso porque o ORM permite que o desenvolvedor utilize uma linguagem de programação para manipular o banco de dados, ao invés de utilizar SQL, e melhora a segurança, eficiência e portabilidade do banco de dados.
Ainda, o ORM permite que o desenvolvedor utilize o banco de dados sem ter que se preocupar com a linguagem de programação utilizada no projeto e linguagem do banco de dados.
## Boas práticas do back-end (Restful API)
- Armazene variáveis de ambiente em um arquivo `.env`.
- Utilize nomes de métodos e variáveis em inglês.
- Utilize nomes de métodos no infinitivo.
- Utilize nomes de variáveis no formato: `nomeDaVariavel`.
- Utilize nomes de constantes no formato: `NOME_DA_CONSTANTE`.
- Utilize nomes de rotas no formato: `/nomeDaRota`.
- Utilize uma pasta para cada recurso, isto é, dentro da pasta `src/users`, crie o arquivo `user.controller` e `user.service`.
- Faça a validação dos dados recebidos na requisição antes de processá-los.
- Utilize o padrão DTO (Data Transfer Object) para transferir dados entre o back-end e o front-end.
## Boas práticas do front-end
- Utilize alguma biblioteca de componentes, como [Material UI](https://material-ui.com/) por exemplo.
- Utilize os componentes da biblioteca de componentes sempre que possível.
- Caso não seja possível utilizar os componentes da biblioteca de componentes, crie componentes reutilizáveis.
- Crie componentes para cada elemento que se repete em mais de uma página.
- Parametrize os componentes para que eles possam ser reutilizados em diferentes contextos.
- Utilize de ferramentas que padronizam o código para a equipe automaticamente:
- [Prettier](https://prettier.io/), para a estilização do código (identação, espaçamento, etc).
- [ESLint](https://eslint.org/), para a verificação de erros e padronização do código (nomenclatura de variáveis, etc).
- [Husky](https://typicode.github.io/husky/#/), para a execução automática do Prettier e ESLint antes de cada `commit`/`push`.
- Não deixe texto solto no código, utilize arquivos de tradução.
- Utilize o arquivo `src/locales/en.json` para textos em inglês, e `src/locales/pt_br.json` para textos em português.
- Utilize uma biblioteca de tradução, como [react-i18next](https://react.i18next.com/), para traduzir os textos, mesmo que o projeto não tenha suporte a múltiplos idiomas.
- Isso permite que o projeto tenha suporte a múltiplos idiomas no futuro, sem que seja necessário alterar o código, além de facilitar a manutenção do código (por exemplo, para alterar um texto, basta alterar o arquivo de tradução, ao invés de alterar o código e procurar por todos os lugares onde o texto aparece).
### Boas práticas de estilização
O mais importante é que o projeto tenha um estilo consistente e seja responsivo (isto é, funcione em diferentes tamanhos de tela).
Isto porque, hoje em dia, os usuários acessam o projeto utilizando diferentes dispositivos, como computadores, tablets e celulares, e diferentes navegadores, como Chrome, Firefox, Safari, etc.
Portanto, é importante que o projeto funcione em todos estes dispositivos e navegadores sem que seja necessário alterar o código para cada dispositivo e navegador individualmente.
- Aplique um estilo global utilizando o arquivo `src/index.css`.
- Utilize o arquivo `src/index.css` para definir estilos globais, como fontes, cores, etc.
- Utilize o arquivo `src/index.css` para importar fontes, imagens, etc.
- Lembre-se que cada navegador possui um estilo padrão, portanto, é necessário resetar o estilo do navegador.
- Utilize o arquivo `src/index.css` para resetar o estilo do navegador.
- Algumas bibliotecas de componentes já resetam o estilo do navegador, portanto, verifique se a biblioteca de componentes utilizada já resetou o estilo do navegador.
- Caso este não seja o caso, algumas propriedades comuns de serem alteradas são:
- `box-sizing: border-box;`
- `margin: 0;`
- `padding: 0;`
- `img { display: block; max-width: 100%; }`
- `a { text-decoration: none; }`
- `button { border: none; }`
- `button:focus { outline: none; }`
- `ul { list-style: none; }`
- Estas são apenas algumas propriedades comuns de serem alteradas, portanto, verifique se o estilo do navegador foi resetado corretamente.
- Crie um arquivo para cada recurso, isto é, página ou componente.
- Cuide ao definir tamanho e posição dos elementos.
- Quando utilizar `px`:
- Utilize `px` para definir o tamanho de elementos que não devem ser redimensionados, como imagens, por exemplo.
- Utilize para definir bordas, sombras, etc.
- Quando utilizar `rem`:
- Utilize `rem` para definir o tamanho de elementos que devem ser redimensionados, como `padding`, `margin`, etc.
- Utilize `rem` para definir o tamanho de fontes, caso o tamanho da fonte deva ser redimensionado.
- Quando utilizar `%`:
- Utilize `%` para definir o tamanho de elementos que devem ser redimensionados, como `width`, `height`, etc.
- Funções úteis em CSS:
- `calc()`: permite realizar operações matemáticas.
- Exemplo: `width: calc(100% - 20px);`
- Exemplo: `width: calc(100% / 3);`
- Exemplo: `width: calc(100% / 3 - 20px);`
- `min()`: retorna o menor valor.
- Exemplo: `width: min(100%, 300px);`
- Neste exemplo, o elemento terá no máximo 300px de largura.
- Exemplo: `width: min(100% / 3, 300px);`
- Neste exemplo, o elemento terá no máximo 300px de largura, ou 1/3 da largura da tela, o que for menor.
- `max()`: retorna o maior valor.
- Exemplo: `width: max(100%, 8rem);`
- Neste exemplo, o elemento terá no mínimo 8rem de largura.
- Exemplo: `width: max(100% / 6, 8rem);`
- Neste exemplo, o elemento terá no mínimo 8rem de largura, ou 1/6 da largura da tela, o que for maior.
- `clamp()`: retorna um valor entre um valor mínimo e um valor máximo.
- Exemplo: `width: clamp(8rem, 100% / 6, 20rem);`
- Neste exemplo, o elemento terá no mínimo 8rem de largura, ou 1/6 da largura da tela, ou no máximo 20rem de largura.
- Exemplo: `width: clamp(8rem, 100% / 6, 100%);`
- Neste exemplo, o elemento terá no mínimo 8rem de largura, ou 1/6 da largura da tela, ou no máximo 100% da largura da tela.
- É possível misturar estas regras, por exemplo:
- `width: clamp(8rem, min(100% / 6, 20rem), 100%);`
- Neste exemplo, o elemento terá no mínimo 8rem de largura, ou 1/6 da largura da tela, ou no máximo 20rem de largura, ou no máximo 100% da largura da tela.
Clone repository
  • AGES_I
  • AGES_II
  • AGES_III
  • AGES_IV
  • Home
  • Padrao_de_Codigo