Quando desenvolvido em grupo ou time, a formatação do código de um projeto é um assunto que cria polêmicas com frequência. Cada pessoa tem suas preferências e isso gera conflitos durante as revisões.
Para minimizar esse problema há três pontos que podem ser adotados pelo projeto:
- Deve haver algum padrão de formatação para o projeto;
- Dar preferência para formatação automatizada; e
- Documentar como configurar a formatação automatizada.
Tenha algum padrão de formatação
Para o projeto em si, não importa qual é o padrão estético do código, desde que o código funcione. Os programadores, no entanto, possuem preferências com respeito à estética do código.
Esse primeiro ponto reforça que algum padrão exista. Não importa qual seja o padrão, desde que ele exista e seja seguido. Dessa forma, essas discussões nas revisões deixam de focar em critérios pessoais e passam a usar um critério objetivo: estar ou não de acordo com o padrão.
Com o padrão definido, as discussões sobre preferência pessoal são minimizadas e, caso haja algum ponto adicional que o padrão não abrange, faz-se uma reunião para definir o padrão para tal caso.
Automatize a formatação
O segundo ponto, por sua vez, elimina o trabalho manual de formatar e consequentemente elimina apontamentos de erro nas revisões por conta de erros de formatação.
Também são eliminadas algumas reuniões sobre preferências pessoais não abrangidas pelo padrão, porque as decisões precisam ser mantidas dentro das opções fornecidas pelo formatador automático.
Além disso, são menos regras para se lembrar na hora de escrever código.
Só há uma regra: execute o formatador nos arquivos modificados.
Existe um projeto chamado pre-commit que realiza tarefas logo antes de realizar um commit com o git. O tipo de tarefa mais comum é formatar o código com alguma ferramenta externa, como o clang-format (para C/C++).
Ainda melhor: alguns editores podem ser configurados para formatar o código sempre que o arquivo é salvo.
Documente o processo de automação
É importante documentar como abaixar, instalar e configurar essas ferramentas, de forma que todos possam aderir sem dificuldades.
Crie um link com a informação no LEIAME (README) do próprio projeto ou adicione a informação diretamente nele.
Essa documentação só precisa ser feita uma vez e outros projetos podem simplesmente copiar e adaptar para as suas necessidades.
Links úteis
- pre-commit (formate automaticamente antes de cada commit)
- clang-format (formatador C/C++)
- black (formatador Python)
Considerações finais
Definir um padrão para o código é importante para evitar discussões sem fim sobre a estética do código.
Ferramentas de formatação automática são a melhor opção para eliminar essas discussões e manter o código formatado consistentemente.
Documentar o processo de configuração das ferramentas é importante para os desenvolvedores fazerem uso delas.