Penso que há realmente duas coisas a tratar e, de fato, as consideraria separadamente, porque não podem ser abordadas da mesma maneira, embora eu ache as duas importantes.
- O aspecto técnico: que visa evitar código arriscado ou mal formado (mesmo que aceito pelo compilador / intérprete)
- O aspecto da apresentação: que se preocupa em tornar o programa claro para os leitores
O aspecto técnico que eu qualifico do Padrão de Codificação , assim como Herb Sutter e Andrei Alexandrescu, com seus Padrões de Codificação C ++ . A apresentação que eu qualifico do Estilo de codificação , que inclui convenção de nomes, recuo, etc ...
Padrão de codificação
Por ser puramente técnico, um Padrão de Codificação pode ser principalmente objetivo. Como tal, todas as regras devem ser suportadas por um motivo. No livro que me referi a cada item, temos:
- Um título, simples e direto ao ponto
- Um resumo, que explica o título
- Uma discussão, que ilustra a questão de fazer o contrário e, portanto, afirma a lógica
- opcional Alguns exemplos, porque um bom exemplo vale mais que mil palavras
- opcional Uma lista de exceções às quais esta regra não pode ser aplicada, às vezes com soluções alternativas
- Uma lista de referências (outros livros, sites) que discutiram este ponto
A justificativa e as exceções são muito importantes, pois resumem o porquê e quando.
O título deve ser explícito o suficiente para que, durante as revisões, seja necessário apenas uma lista de títulos (folhas de dicas) para trabalhar. E, obviamente, agrupe os itens por categoria para facilitar a procura por um.
Sutter e Alexandrescu conseguiram ter uma lista de apenas cem itens, mesmo que o C ++ seja considerado peludo;)
Estilo de codificação
Essa parte geralmente é menos objetiva (e pode ser totalmente subjetiva). A intenção aqui é garantir consistência, pois isso ajuda os mantenedores e os recém-chegados.
Você não deseja entrar em uma guerra santa sobre qual estilo de recuo ou chave é melhor aqui, há fóruns para isso: portanto, nessa categoria, você faz coisas por consenso> voto da maioria> decisão arbitrária do (s) líder (es).
Para um exemplo de formatação, consulte a lista de opções de Estilo Artístico . Idealmente, as regras devem ser claras e completas o suficiente para que um programa possa reescrever o código (embora seja improvável que você codifique um;))
Para a convenção de nomenclatura, eu tentaria distinguir classes / tipos facilmente de variáveis / atributos.
É também nesta categoria que classifico as "medidas" como:
- prefira métodos curtos a longos: geralmente é difícil concordar quanto tempo dura
- prefira retorno antecipado / continuar / interromper para reduzir o recuo
Misc?
E, como uma palavra final, há um item que raramente é discutido nos Padrões de Codificação, talvez porque seja específico de cada aplicativo: organização do código. A questão arquitetônica é talvez a mais destacada, estrague o design inicial e você será atormentado por isso daqui a alguns anos. Talvez você deva adicionar uma seção para tratamento básico de arquivos: cabeçalhos públicos / privados, gerenciamento de dependências, separação de interesses, interface com outros sistemas ou bibliotecas ...
Mas isso não é nada se não forem realmente aplicados e aplicados .
Qualquer violação deve ser apresentada durante as revisões de código e nenhuma revisão de código deve ser aceitável se uma violação estiver pendente:
- corrija o código para corresponder à regra
- corrija a regra para que o código não se destaque mais
Obviamente, mudar uma regra significa obter o "ir em frente" dos líderes.