Poder Semântico BCC IFG
Desenvolvimento Potencializado: Poder Semântico em Ação

Bruno Silveira

Postado em 28 jul, 2023

  • git
  • github
  • desenvolvimento

No mundo acelerado da programação, onde a colaboração e a eficiência são essenciais, cada detalhe importa. Um aspecto muitas vezes negligenciado é a nomeação de branches e commits em sistemas de controle de versão.

  • Exemplo:

Mas e se eu lhe dissesse que adotar um padrão semântico para os nomes de branches e commits poderia revolucionar sua experiência de desenvolvimento? Neste post de blog, vamos explorar os benefícios de utilizar padrões semânticos e como eles podem transformar a forma como você trabalha.

  • Abraçando a Clareza e o Contexto

Quando se trata de controle de versão, clareza e contexto são fundamentais. Ao incorporar padrões semânticos aos nomes de branches e commits, você traz um novo nível de entendimento e eficiência ao seu código. Cada nome se torna uma informação relevante, fornecendo insights valiosos sobre o propósito e o escopo das alterações realizadas.

Logo você não precisa mais decifrar nomes enigmáticos ou perder tempo tentando descobrir quais alterações estão relacionadas um commit, ou branch. Dessa forma você instantaneamente sabe do que se trata, aumentando sua produtividade !! ⭐

  • Consistência

A consistência é a base da colaboração efetiva. Quando todos os membros da equipe seguem o mesmo padrão semântico para os nomes de branches e commits, cria-se uma linguagem compartilhada que promove a colaboração e o entendimento. Os membros da equipe podem identificar rapidamente as branches e commits relevantes, tornando as revisões de código e as discussões mais eficientes e direcionadas

  • Traçabilidade e Documentação

A documentação é uma parte essencial do desenvolvimento de software. Os padrões semânticos para os nomes de branches e commits funcionam como uma forma de documentação em si mesmos. Eles fornecem um rastro de alterações, facilitando o rastreamento da evolução de funcionalidades, correções de bugs e melhorias ao longo do tempo.

Ao adotar padrões semânticos, você cria um registro histórico que auxilia na solução de problemas, auditorias e manutenção do código. Torna-se mais simples identificar o exato momento em que um bug foi introduzido ou acompanhar o progresso de uma determinada funcionalidade ao longo de seu ciclo de desenvolvimento.

  • Exemplos no Mundo Real

Vamos dar uma olhada em alguns exemplos de padrões semânticos para os nomes de branches e commits:

feat/#42-adicionar-pagina-login: Esse nome nos diz que é uma nova funcionalidade (#42 relacionada à adição de uma página de login. Ele fornece contexto e facilita a localização das alterações relevantes.

fix/DT-1567-validacao-quebrada: Aqui, temos uma correção de bug (DT-1567) abordando um problema de validação quebrada. O nome nos dá informações precisas sobre o problema sendo resolvido.

docs/README-atualizacao: Neste caso, temos uma atualização de documentação relacionada ao arquivo README. O nome indica uma alteração não relacionada ao código, mas mantém consistência com o padrão semântico.

  • Sintaxe

<tipo>/<referência>-<descrição>

<tipo>: Representa o tipo de alteração realizada. Alguns tipos comuns incluem:

feat ou feature: para adição de uma nova funcionalidade.
fix: para correção de um bug.
docs: para atualização ou criação de documentação.
chore: para tarefas relacionadas à infraestrutura, configurações, etc.
refactor: para refatorações de código.
test: para adição ou modificação de testes.
style: para alterações relacionadas a formatação ou estilo de código.
Entre outros tipos específicos ao contexto do projeto.

<referência>: Representa uma referência única, como um número de problema, um código interno, um identificador de tarefa, etc. Essa referência auxilia na associação da alteração a um item específico de trabalho ou problema a ser resolvido.

<descrição>: Descreve de forma concisa a natureza da alteração realizada. É recomendado utilizar palavras-chave ou frases curtas que identifiquem claramente o objetivo da alteração.

O mesmo vale para commits:

[<tipo>] (<referência>): <descrição>

(<referência>) --> opcional

Valores de exemplo <referência>:
- init
- runner
- watcher
- config
- web-server
- proxy
- deployment
- backend
- authentication 
- database
- release

O <referência> pode estar vazio (por exemplo,
se a alteração for global ou difícil de atribuir a um único 
componente), caso em que os parênteses são omitidos.

docs: Update the dependencies

O formato recomendado para uma mensagem de commit é composto por um cabeçalho, corpo e rodapé. O cabeçalho deve ser curto, descrevendo de forma clara a ação realizada no commit. Já o corpo e o rodapé são opcionais, mas podem fornecer informações adicionais, como contexto, motivação ou referências a problemas resolvidos.

  • Usa o imperativo, tempo presente: "Adicionar", "Corrigir" ou "Atualizar"

  • Inclui motivação para a mudança e contrasta com o comportamento anterior

EX: 1

feat: Adicionar funcionalidade de login

- Implementa a página de login
- Validação de campos de entrada
- Integração com serviço de autenticação

Closes #123

EX: 2

[fix] (#12): Corrige erro de formatação no cabeçalho da página inicial

O cabeçalho da página inicial estava sendo exibido com uma formatação
incorreta, resultando em uma aparência inconsistente. 
Essa correção ajusta a formatação para garantir uma 
exibição adequada do cabeçalho.

Close#12
  • Conclusão

O poder dos padrões semânticos para os nomes de branches e commits não pode ser subestimado. Eles trazem clareza, contexto e consistência ao seu processo de desenvolvimento. Ao adotar esses padrões, você aprimora a colaboração, melhora a traçabilidade e cria uma experiência de codificação mais eficiente e agradável.

🤔Então, por que não começar a incorporar padrões semânticos em seu fluxo de controle de versão hoje?

Se esse post te ajudou, agregou conhecimento ou incrementou 😜, Compartilhe com outros amigos DEVs para que possam ter um fluxo de trabalho mais organizado. Comente também o padrão que você segue.

💡Lembre-se, o segredo do sucesso está nos detalhes, e com padrões semânticos, você pode elevar seu jogo de programação a novos patamares. Feliz desenvolvimento!