Qual a importância das diretrizes de formatação de código? [fechadas]

18

Os padrões de codificação são comuns em qualquer organização de desenvolvimento de software, mas qual a importância deles a seguir? Eu posso entender a necessidade de alguma consistência, mas ao lidar com coisas simples, como posição de chaves, comprimento de linha, etc., não tenho certeza de que padrões excessivamente rígidos contribuam muito para o desenvolvimento de software.

Não é mais importante que seu código seja legível, não que esteja em conformidade com um padrão predefinido? Parece que eles são mais ... orientações de qualquer maneira.

derekerdmann
fonte

Respostas:

12

Pedir a todos que sigam 100% da mesma diretriz de formatação de código padrão é como pedir a todos que colaborem separadamente na redação de um artigo de 100 páginas com o mesmo estilo de escrita.

Espero que todos escrevam o artigo em inglês (ou mesmo idioma), mas estilos diferentes serão aparentes. Alguns escreverão bem, outros não. Alguns usam contrações, outros soletram completamente as palavras (exemplo: é verdade). Etc.

Eu acho que você tocou nos pontos mais importantes:

  1. É uma diretriz
  2. Legibilidade

Se você deseja que o código adote a mesma formatação, como um papel com o mesmo estilo de escrita, será necessário editar e revisar. O código precisará ser limpo, revisado, refatorado etc.

Eu nunca estive em uma loja onde fiquei completamente feliz com o estilo de codificação ou a formatação de outro desenvolvedor (no mínimo porque não é exatamente como o meu). Mas ficarei contente se puder ler / entender e se for consistente. Tudo o resto é o açúcar no açúcar sintático.

Então, para responder à sua pergunta: um pouco importante, mas certamente não é o fim do mundo, se não o fizer.

esponja
fonte
3
Especialmente # 2: Legibilidade. Às vezes, um pouco específico de código pode ser tornado mais legível, desviando-se da diretriz.
Bart van Heukelom 14/09/10
Graças aos IDEs atuais, você pode se aproximar de 100% se reformatar o código com base em um modelo a cada operação de salvamento. O Eclipse faz isso muito bem.
Markus
1
@ Markus funciona até que alguém queira usar outro IDE ou editor. Prefiro fazê-lo em um gancho de pré-confirmação para dar mais liberdade aos desenvolvedores.
Gustav Karlsson
Fair point @GustavKarlsson, dessa forma, você centraliza a formatação e cria um único ponto de mudança, caso o "padrão" mude. Como solução alternativa (com mais esforço envolvido), você sempre pode escrever um modelo adicional para o novo IDE.
Markus
5

Para padrões de formatação, sigo o que todo mundo está fazendo. Se eles estão usando o PascalCase para tudo, eu uso o PascalCase. Se eles usam _camelCase, então eu uso _camelCase. Por quê? Porque limita a quantidade de reformatação que faço e o que os outros precisam fazer para que "pareçam bons". Os padrões de formatação geralmente estão lá para facilitar as coisas para todos.

TheLQ
fonte
5

No meu trabalho atual, uma das minhas primeiras tarefas foi criar um padrão de codificação para o nosso grupo de desenvolvimento.

Meu primeiro esforço teve cerca de sessenta páginas (ele incorporou grande parte das Diretrizes da Estrutura da Microsoft). Pediram-me para reduzi-lo, e meu próximo esforço foi de dez páginas, utilizando idéias de várias fontes boas. Pediram-me para reduzi-lo novamente e finalmente reduzi-o para três ou quatro páginas, eu acho.

Nunca foi adotado.

Por quê? Porque trabalho com muitas pessoas realmente inteligentes, que já seguem instintivamente um padrão de codificação sensato.

Da minha parte, sigo as diretrizes geralmente aceitas da Microsoft e emulo os estilos mais usados ​​de outras pessoas (Javascript e jQuery são formatados de maneira diferente do C #, mesmo que sejam linguagens entre chaves). Eu também quebro as regras de tempos em tempos, quando isso torna o código mais legível.

Robert Harvey
fonte
Por que você escreveu seu próprio padrão de codificação quando existem tantos por aí e é realmente padrão para a linguagem / estrutura usada?
Florian Margaine 19/11/2013
2
Ele nunca foi adotado - tadaa, e havia a declaração que eu estava procurando enquanto procurava as respostas. Esse é o objetivo: quanto mais pessoas e maior a complexidade e a arbitrariedade das regras, menor a probabilidade de que elas sejam adotadas pela maioria da equipe. A menos que não seja imposto de alguma forma, como o Visual Studio ou a linguagem Go, os desenvolvedores tendem a seguir suas próprias mentes. Estou esperando há quase 10 anos o IDE que separa o conteúdo do código do estilo do código.
JensG
2

Se você usa um IDE que faz o básico disso para você (Visual Studio, por exemplo), deixe o IDE fazer suas coisas e tudo o que parece ainda ser difícil de ser modificado, desde que você ainda permita que o IDE faça suas coisas ou a próxima pessoa que formata automaticamente, vai matá-lo de qualquer maneira.

O que é mais legível para uma pessoa não será para todas as pessoas.

Se você não estiver usando esse tipo de IDE, obtenha um. Mesmo pensando sobre isso por mais de 10 minutos é um desperdício de recursos IMHO.

Conta
fonte
4
Eu tenho que discordar. Não acho nada mais irritante do que um IDE que mude a formatação por conta própria. Por que devo permitir que ele modifique meu código sem o meu consentimento? Corta uma parte decente do controle que eu gosto de ter sobre o meu trabalho.
precisa saber é o seguinte
Bill, você está falando das convenções de nomenclatura de arrastar e soltar que o IDE gera como o TextBox01? Ou você quer dizer um plug-in do Visual Studio como o Resharper?
spong
derek - sim, isso é chato, mas o tempo que me poupa de não ter que prestar atenção a ele 90% do tempo vale 10% do tempo que eu tenho que lutar.
Bill
sun - eu quis dizer formatação apenas neste caso. Eu ficaria bem com os nomes de controle padrão no drop apenas se fosse extremamente óbvio o que estava acontecendo. de muitas formas que desmoronam após o segundo controle. Eu não sou um grande fã de recarregadores, mas quando o uso, também não tento corrigir o que gera muito. Não lute contra o seu conjunto de ferramentas quando não precisar.
Bill
Pode haver vários IDEs na mesma equipe - por exemplo, Eclipse e IDEA for Java. Seria necessário um pouco de esforço para configurar a formatação do código na forma de arquivos de configuração - mas vale a pena.
talonx
1

Eu acho que há um benefício não mencionado em ajudar a entender rapidamente o código. Quanto mais semelhante for a formatação do código em um projeto e em todos os desenvolvedores, mais fácil (e mais subconscientemente) você poderá trabalhar com o código.

Eu tive desenvolvedores juniores que vieram até mim depois de tentar lidar com erros simples mesmo por um longo período de tempo. Depois de alguns minutos para aplicar nosso formato de código com eles, eles foram capazes de ver rapidamente o bug que haviam perdido antes.

Embora a legibilidade seja definitivamente importante. Se seus padrões de formato de código forem bem pensados ​​e usados ​​corretamente, você poderá ir além de apenas ler o código e entender o código ainda mais rapidamente.

Um conjunto de diretrizes que uso ao desenvolver ou atualizar nossos formatos de codificação é o Princípios de agrupamento da Gestalt - http://en.wikipedia.org/wiki/Gestalt_psychology#Gestalt_laws_of_grouping

Como resultado direto / exemplo, nossa formatação de código exige que qualquer código de bloco (if, switch, etc.) tenha a chave aberta na próxima linha, para que ela se alinhe com a chave de fechamento:

if(true)
{
}

Com o raciocínio de que, pelo Princípio da Simetria, sua mente verá as chaves de abertura e fechamento e mais rapidamente será capaz de perceber o bloco de código naturalmente.

Chris
fonte
After taking a few minutes to apply our code format with them, they were quickly able to see the bug that they had missed before.Isso não ocorre porque seu formato de código os ajudou a ver o erro. É porque a tarefa de reformatar o código os forçou a examinar cuidadosamente o código que eles estavam examinando antes.
Brandin
1

Não importa qual idioma ou ferramenta você use, crie alguma coisa. Configure seu IDE e faça o check-in no arquivo de configuração.

Quando alguém faz check-out do projeto, eles usam os mesmos estilos de formatação. Não importa qual é o estilo, apenas que seja consistente. Eu tenho minhas próprias preferências com relação aos espaços v. Guias, e a linha que os aparelhos encaracolados continuam. Mas mais do que minhas próprias preferências, eu apenas me importo que um determinado arquivo de código-fonte esteja de acordo. Isso o torna muito mais legível do que ser uma bagunça resultante de uma guerra de formatos.


fonte
0

A pior coisa que encontrei até agora é não usar padrões de codificação. E você está proibido de tornar mais legível algum bloco de código, pois ele quebra as ferramentas diff ... Porque estamos usando patches para aplicar alterações (solicitação de alteração / correção de bug -> correção / alteração -> correção -> correção aplicada por pessoa "confiável" -> commit) você pode obter um código fonte com aparência muito engraçada (do ponto de vista da legibilidade). Pelo menos não temos ninguém usando variáveis ​​de duas letras (-.

[engraçado] O mais engraçado é que todos concordam que precisamos mudar isso. Houve até algumas tentativas de reformatação (automatizadas no commit), mas porque uma única opção minúscula de formatação está faltando - tudo acabou. Vista ...

Audrius
fonte
0

As diretrizes ajudam a melhorar a qualidade do código:

  • do ponto de vista do escritor: muitas regras visam reduzir a introdução de bugs. Por exemplo, uma regra que declara que if()ou for(;;)construções devem ser seguidas por um bloco e não por uma única instrução, torna explícita a intenção do codificador inicial e ajuda os próximos codificadores a manter isso.

  • do ponto de vista do leitor: o código que segue as diretrizes acordadas é revisado com mais eficiência do que o código com vários estilos. O revisor sabe melhor, com menos esforço, onde procurar possíveis erros.

mouviciel
fonte
0

Não existe um padrão universal para o que uma equipe deve ou não fazer. Algumas equipes precisam seguir diretrizes rígidas, outras não.

O ponto é que você deve trabalhar em equipe e decidir o que é melhor para sua equipe . O código deve ser fácil de ler, porque é uma ordem de grandeza de leitura mais vezes do que está escrito. Se sua equipe precisar de orientação para criar código legível, siga um padrão de codificação. Se não, não.

Tudo isso dito, acho que a maioria das equipes se beneficiaria de concordar com uma maneira padrão de nomear variáveis, funções e classes, chaves de posição e assim por diante. Se a equipe não pode concordar com algo tão simples como isso, como eles podem se unir e tomar decisões realmente importantes? Além disso, sua equipe não será composta das mesmas pessoas para sempre - as pessoas saem, novas pessoas são contratadas. Quanto mais fácil é para as novas pessoas entenderem a base de código, mais rapidamente elas podem contribuir para a equipe sem diminuir a qualidade do código.

Bryan Oakley
fonte