O que é um nível razoável de detalhes para um guia de estilo? [fechadas]

5

Estamos desenvolvendo software incorporado para um produto automotivo em ANSI-C em uma grande equipe. Ontem, em nossa revisão regular de código, tivemos uma discussão geral sobre o estilo do nosso código. Temos uma linha de guia de codificação (aproximadamente 30 páginas), que garante principalmente certas práticas necessárias e além disso trata de notação húngara, nível de recuo, estratégia de nova linha para blocos de código, etc.

A discussão de ontem foi sobre se deveria haver linhas de guia mais detalhadas sobre como o código é formatado. Exemplo de declarações:

int int1,
    int2 = 0;
short short1;
long_type_name_defined var1;
const * type var2;
type const* var3;

Um colega teve a opinião de que deveria haver uma diretriz clara de como alinhar consistentemente as variáveis (por exemplo: espaços até o tipo regular mais longo), se deve ou não haver espaços entre "*" e tipo / qualificador, onde o qualificador está localizado, se deve ou não usar o operador "," etc. Coisas que poderiam ser de alguma forma declaradas como uma questão de gosto pessoal.

Pro:

  • maior legibilidade
  • é melhor entender para "externos" (que são novos no código ou normalmente não lidam com isso)

Con:

  • porque é de alguma forma uma questão de gosto pessoal, o que aumenta a legibilidade de uma pessoa, poderia diminuí-la para outra (?)
  • pode ser difícil definir claramente
  • o conjunto de regras de estilo seria ampliado muito
  • muito trabalho para sempre seguir um grande conjunto de regras

A questão principal é de alguma forma: Será que realmente ajuda ter um conjunto de regras muito específico? Não foi possível encontrar um consenso claro sobre isso. Um guia de estilo deve aumentar a legibilidade / manutenção do código, portanto, haverá um ótimo entre o tamanho do conjunto de regras e a "beleza" do código (?).

Eu gostaria de receber suas opiniões sobre onde esse ótimo é.

    
por Jakob S. 21.05.2015 / 08:50
fonte

2 respostas

4

Does it really help to have a very specific rule set?

Não. Francamente, não. Ou, para colocar de forma mais construtiva - dê uma olhada em qualquer código fonte do github ou do sourceforge, você consegue ler tit? Se a resposta for "sim", você acabou de demonstrar que um único estilo não é importante para a legibilidade.

O que ajuda a legibilidade é um código legível, que pode soar estranho, mas geralmente é muito simples de descrever sem regras extensas - o uso criterioso de espaço em branco, recuo e linhas em branco tornam o código legível. Colocar tudo junto para usar o menor número possível de teclas é a antítese legível.

O que eu descobri é que guias de estilo extensos simplesmente não são seguidos. 30 páginas é loucura - você tem que gastar mais tempo tentando descobrir se está seguindo o guia do que aprendendo o código! E o mesmo acontece com todo mundo que revisa o código, e mesmo assim as pessoas simplesmente perdem partes. (embora possa ser satisfatório quando o mais fervoroso defensor do extenso guia de estilo erra seu próprio código)

O melhor guia que já vi simplesmente disse "certifique-se de que seu código tenha a mesma aparência do código em que você está trabalhando". Isso é fácil de seguir, e é óbvio que as coisas estão erradas - elas se destacam como "diferentes". Não importa qual o estilo original usado, desde que seja consistente.

Agora, para 'externos': os guias de estilo não ajudam aqui. Quem se importa com quantos espaços você coloca na frente de uma declaração de variável? Tais trivialidades não importam. O que ajuda, no entanto, é o layout - se as declarações forem sempre colocadas no topo de uma função ou classe, seus novatos saberão onde procurar as variáveis. Se a convenção de nomenclatura de arquivos tiver algumas regras, elas poderão encontrar facilmente o código da interface do usuário, pois sempre estará em um arquivo chamado "customerUI.c" (digamos). Pequenas coisas assim importam muito mais do que qualquer quantidade de estilo.

Você poderia dizer "estrutura é o que os padrões impõem, o estilo só precisa ter um padrão mínimo"

    
por 21.05.2015 / 10:03
fonte
2

Eu acho bastante claro que um estilo de programação consistente pode ajudar algumas coisas especialmente se você estiver publicando seu código.

  • Impede o estilo incomum
  • Diferença de código limitada entre versões no check-in para o controle de origem
  • Estilo consistente em toda a base de código facilita a compreensão

No entanto, eu diria que é definitivamente uma coisa cara para se ter. Você tem custos extras sobre uma empresa que não impõe um estilo de codificação.

  • Novo funcionário, tempo gasto lendo / aprendendo o estilo (todas as empresas têm estilos diferentes)
  • Senior dev, tempo gasto escrevendo o estilo
  • Senior dev, tempo gasto mantendo o estilo wiki / sharepoint
  • Senior dev, tempo gasto impondo o estilo
  • Equipe, tempo gasto discutindo sobre o estilo
  • Equipe, tempo gasto digitando coisas extras exigidas pelo estilo (ou seja, formato dos comentários etc)
  • DevOps, tempo gasto para conseguir que o IC imponha o estilo

Talvez a única exceção seja onde você usa uma ferramenta automatizada como o estilo policial para estilizar automaticamente seu código. Nesse caso, se você aceitar as regras padrão, poderá obter um estilo bastante consistente com alguns cliques.

    
por 21.05.2015 / 10:18
fonte