É uma boa idéia impor o mesmo formato de código para todos os desenvolvedores?

88

Estamos pensando em impor um único formato de código padrão em nosso projeto (formato automático com ações de salvamento no Eclipse). O motivo é que atualmente há uma grande diferença nos formatos de código usados ​​por vários (> 10) desenvolvedores, o que dificulta que um desenvolvedor trabalhe no código de outro desenvolvedor. O mesmo arquivo Java às vezes usa 3 formatos diferentes.

Então, acredito que a vantagem é clara (legibilidade => produtividade), mas seria uma boa ideia impor isso? E se não, por que?

ATUALIZAÇÃO
Todos nós usamos o Eclipse e todos estão cientes do plano. Já existe um formato de código usado pela maioria, mas não é imposto, pois alguns preferem manter seu próprio formato de código. Por causa das razões acima, alguns preferem aplicá-lo.

Stijn Geukens
fonte
2
todos os seus desenvolvedores usam o Eclipse? você falou com eles sobre esse plano? Sem saber disso, sua pergunta é difícil de responder, seria preciso adivinhar demais #
446
9
Será que ela realmente tornar mais difícil para um desenvolvedor para trabalhar no código de outro, ou são desenvolvedores só ser alérgico a leitura de código ligeiramente diferente?
precisa
27
Ao usar um sistema de controle de código de fonte (como svn), verifique se as alterações na formatação do código são confirmadas separadamente das alterações semânticas - caso contrário, será difícil encontrar essas alterações semânticas.
Martin Schröder
4
Eu discordo de Martin aqui, bem mais ou menos. Minha regra geral é que, se você fizer uma alteração lógica / semântica, poderá alterar o formato das linhas que alterou, caso contrário, não poderá alterar o formato das linhas apenas porque gosta. Não obstrua seu log de controle de versão com pequenas alterações de reformatação.
Bento
3
Por outro lado: se todos usarem o mesmo formato, apenas o primeiro commit para reformatar tudo ficará entupido. Tudo o resto tocará apenas as alterações locais feitas, o que é aceitável na minha opinião.
precisa saber é o seguinte

Respostas:

107

Atualmente, trabalho em um local em que um formato de código padrão é imposto e o código é formatado automaticamente ao salvar o arquivo, exatamente como você está prestes a fazer. Como um novo membro da empresa, descobri que as regras comuns de formatação me davam uma sensação calorosa e confusa de que "esses caras sabem o que estão fazendo", então eu não poderia estar mais feliz. ;) Como uma observação lateral relacionada, com as regras de formatação comuns, também aplicamos certas configurações de aviso do compilador bastante estritas no Eclipse, com a maioria delas definida como Erro, muitas definidas como Aviso e quase nenhuma definida como Ignorar.

Eu diria que há duas razões principais para impor um formato de código único em um projeto. O primeiro diz respeito ao controle de versão: com todo mundo formatando o código de forma idêntica, todas as alterações nos arquivos são garantidas. Chega de adicionar ou remover um espaço aqui ou ali, e muito menos reformatar um arquivo inteiro como um "efeito colateral" de alterar apenas uma ou duas linhas.

A segunda razão é que isso tira os egos dos programadores da equação. Com todo mundo formatando seu código da mesma maneira, você não pode mais dizer com tanta facilidade quem escreveu o que. O código se torna uma propriedade mais anônima e comum, portanto, ninguém precisa se sentir desconfortável com a alteração do código de "outra pessoa".

Essas são as principais razões, existem outras também. Acho reconfortante não ter que me preocupar em pensar na formatação do código, pois o Eclipse fará isso por mim automaticamente quando eu salvar. É livre de preocupações, como escrever documentos com o LaTeX: é formatado posteriormente e você não precisa se preocupar com isso enquanto escreve. Eu também trabalhei em projetos em que todos tinham seus próprios estilos. Em seguida, você deve pensar em questões estúpidas e sem sentido, como se não há problema em modificar o código de outra pessoa no seu próprio estilo, ou se você deve imitar o estilo deles.

O único argumento contra as configurações comuns de formatação de código que posso pensar para o seu caso é que aparentemente ele é um projeto em andamento, portanto causará muitas alterações desnecessárias em todos os arquivos, alterando o histórico real dos arquivos. O melhor cenário é se você pode começar a aplicar as configurações desde o início de um projeto.

Zero um
fonte
20
+100 em tirar egos (e propriedade) dos programadores da equação. A "reivindicação" dos programadores para partes do código não contribui para a produtividade porque impede o compartilhamento de conhecimento e significa que há um sinal, pois nem todos os programadores poderiam trabalhar no mesmo trecho de código.
Marco
Foi difícil decidir qual resposta aceitar, mas achei que essa era a melhor argumentada e também a melhor para abordar a questão real.
Stijn Geukens 6/03/2013
"significa que há um sinal dado que nem todos os programadores podem trabalhar no mesmo pedaço de código": Bem, mas isso é algo que você pode querer ter: desde que você não esteja familiarizado o suficiente com um pedaço de código, você deve não trabalhar nele / modificá-lo. Muita propriedade de código compartilhado pode levar todos a trabalharem em toda a base de código e ninguém realmente dominar qualquer parte dela.
Giorgio
Eu teria muito mais tempo para esse tipo de coisa se o código fosse formatado automaticamente para o meu estilo no carregamento. Quando Roslyn chegar ao C #, espero que todos os carregamentos, salvamentos, versões e assim por diante funcionem no AST, e não no texto.
Mark Rendle
Avisos e erros mais rigorosos são uma coisa boa.
Christophe Roussy
37

Todo desenvolvedor de software profissional prefere adotar um padrão (bom) em vez de entrar em guerra evangélica por estilo, pelas mesmas razões que você descreveu.

Muitos desenvolvedores de software empreendem guerras evangélicas ......

Dependendo da sua posição dentro da equipe e da dinâmica da equipe, você pode decidir que vencer a guerra não é possível. Nesse caso, talvez seja melhor não iniciar ...

mattnz
fonte
Tx, eu sei exatamente o que quer dizer
Stijn Geukens
15
Não é profissional travar guerras sobre formatação de código. Um desenvolvedor de software profissional fará as coisas da mesma maneira, não importa se o código diz " if( foo )" ou " if (foo)". Se você realmente precisa vender esse tipo de alteração para alguém, deve apelar para o fato de que eles são profissionais. Eles não podem responder ou parecerão retentores anal. Se alguém fizer assim mesmo, espero que, em seu benefício, encontre um novo emprego em breve.
precisa saber é o seguinte
7
Um desenvolvedor profissional também escreveria um código legível e seria capaz de ler o código de outros desenvolvedores profissionais com bastante facilidade, evitando a necessidade de um padrão abrangente em primeiro lugar. Eu me preocuparia que aqui "o padrão" seja uma correção ruim para o problema errado (você não corrige os desenvolvedores desleixados com um padrão de codificação).
Joris Timmermans
2
A melhor maneira de tentar contornar a maioria dessas guerras sagradas é aceitar padrões de linguagem sempre que possível. Sim, isso significa que seu estilo de codificação variará entre os idiomas (o código C # ex terá {'s em linhas separadas, o java terá na linha anterior e o que PascalCased ou camelCased variará); mas cada fonte de idiomas individual parecerá 'normal' quando você incluir novos desenvolvedores no projeto.
Dan Neely
1
@ruakh Veja os exemplos de código em C # do MSDN, veja como o Visual Studio reformata o C # por padrão: {está na sua própria linha. Repita o exercício para Java na documentação do Oracle e nos padrões do Eclipse ao reformatar o código: {está na linha acima.
precisa
30

Sim, é bom ter um estilo de formato de código para todos os desenvolvedores.

Projete os formatos de estilo de código e importe-os para todos os desenvolvedores.

Isso ajudará quando formos mergingcodificar para o sistema 'Controle de versão'.

NPKR
fonte
5
+1 por mencionar ferramentas de mesclagem e diff. É realmente difícil tentar identificar diferenças entre duas versões de uma base de código quando a formatação não é consistente entre os desenvolvedores.
Pgras
1
+1, eu altamente segundo o argumento do sistema de controle de versão. (mas é principalmente por causa das regras de recuo coisas tais como convenções de nomenclatura não tem tanto impacto.)
BiAiB
As convenções de nomenclatura ajudam quando você precisa descobrir como é chamado um método que você sabe que existe em uma classe.
precisa
1
@ Giorgio De fato, há desenvolvedores que fazem isso. Ao misturar com outras alterações também (por exemplo, correções críticas de erros). Algumas coisas são enviados para tentar-nos ...
Donal Fellows
1
@Donal Fellows: Você está certo. Sigo o princípio de que todo caractere digitado em um arquivo de origem é (1) um erro em potencial (2) introduz uma alteração que dificulta o reconhecimento do código posteriormente. Então, na minha opinião, cada mudança deve ser a menor possível. Mas, sim, existem desenvolvedores que alteram o código sem pensar muito. Gostaria de saber se uma reformatação automática do código pode resolver o problema. Eu preferiria ser a favor da propriedade do código (veja, por exemplo, o ponto 7 em paulgraham.com/head.html ).
Giorgio
16

O que você está tentando obter, o quanto você vai reter anal ao aplicá-lo (e no nível de detalhe que suas "regras" serão definidas), você tentará aplicá-lo no código escrito em diferentes idiomas, você tentará aplicá-lo retroativamente no código existente?

  1. uma aparência e um código comuns ao código podem realmente ajudar a tornar o código mais legível, mas também podem piorar as coisas se for o aspecto e a aparência incorretos. A notação _hUngarian_lpfstr é um excelente exemplo :)
  2. Eu já vi "padrões de código" forçando o número de espaços em branco entre os blocos de comentários, a ordem alfabética dos nomes dos métodos e outras bobagens. Não faça isso.
  3. Idiomas diferentes têm padrões diferentes com os quais as pessoas estão acostumadas a usar. Alguns até exigem esses padrões (pense que Python, Cobol, Visual Studio impõe automaticamente convenções de suporte de estilo C ++, enquanto Java usa o estilo C por convenção, etc. etc.).
  4. nunca altere o código existente para alterá-lo, você está apenas introduzindo novos problemas dessa maneira. E isso significa seções de código e arquivos de origem inteiros. Portanto, não reformate o código existente quando alguém alterar uma única linha em um arquivo de 1000 linhas.
  5. programadores experientes podem ser muito mais produtivos se não precisarem pensar na metade do tempo se o que estão escrevendo "parecerá correto" para o sistema de aprovação automática ou para o revisor. Eles também terão o hábito de escrever código limpo simplesmente porque é isso que funciona, mesmo que haja pequenas diferenças entre seus estilos naturais.



Portanto, embora existam boas razões para impor um estilo e padrão específico, há boas razões para não fazê-lo (também) estritamente.

jwenting
fonte
1
1-2-3: É Java e o formato do código é o da Sun; é apenas formatação, não ordenando métodos ou nomes de variáveis; 4-5: bem, a idéia seria formatar automaticamente ao salvar (ações de salvamento do Eclipse) para que não haja trabalho extra (você nem precisa pensar no formato durante a codificação), mas é claro que também os arquivos existentes seriam reformatados (o primeira vez).
Stijn Geukens
1
+1 para o KISS. @Stijn Por que reformatar código antigo? Basta apertá-lo quando precisar modificá-lo.
Erik Reppen
3
Na verdade, estamos planejando algumas refatorações importantes e reformataríamos todo o código naquele momento, pois a mesclagem será quase impossível de qualquer maneira devido à refatoração. Se reformatarmos apenas as alterações, ainda enfrentaremos problemas de mesclagem devido à alteração de formato daqui a um ano.
Stijn Geukens 5/03/2013
4
Eu geralmente concordo com @StijnGeukens; não apenas por razões de mesclagem, mas porque qualquer limpeza de formatação em larga escala tornará difícil o seguinte histórico de alterações em uma ferramenta de culpa. Se todas as suas alterações de ruído estiverem em um único local, você pode sempre colocar a culpa no início antes desse ponto e, em seguida, fazer uma segunda rodada parando antes, se precisar examinar o histórico mais antigo.
precisa
2
você esqueceu outro motivo Dan: alterações de formatação em larga escala podem facilmente introduzir novos erros em locais inesperados.
jwenting
11

Sim, consistência é uma boa ideia, por razões que outras pessoas mencionaram .

Eu só queria adicionar alguns pontos que não foram usados ​​em outros lugares:

  • A Oracle publicou um conjunto de convenções para Java, que são o padrão de fato.
    • O uso dessas informações ajudará a evitar argumentos sobre qual estilo seguir.
    • Muitas bibliotecas públicas e projetos de código aberto tendem a usar essas convenções; portanto, quando você precisa examiná-las, a formatação deve ser familiar.
    • O formatador Eclipse possui regras integradas para corresponder a essas convenções, o que também deve ajudar.
  • Você pode considerar criar um gancho na sua configuração de controle de origem, para que o código seja formatado automaticamente antes de entrar na ramificação principal.
    • Você pode evitar batalhas com programadores particularmente teimosos que se recusam a seguir o padrão. Eles podem até usar sua própria formatação enquanto trabalham, o que será padronizado mais tarde!
    • Se você acabar usando configurações de formatação personalizadas (por exemplo, muitas pessoas ignoram a convenção "máx. 80 caracteres por linha"), é necessário fazer alterações em um único local.
vaughandroid
fonte
9

Eu estava em uma equipe que usou o plugin Checkstyle . Em vez de usar os recursos prontos para uso, formamos um pequeno comitê de desenvolvedores interessados. Debatemos o que parecia estar faltando, o que parecia excessivo e resolvemos tudo. Todos nós aprendemos algo no processo e fortalecemos esses músculos desenvolvedores.

(Exemplos de nossas decisões: 72 caracteres de largura é muito pequeno, mas 120 foi melhor; é melhor usar _ALLCAPS para finais estáticos; aplicar uma saída única de uma função é uma boa idéia.)

Quando tivemos revisões de código, uma das primeiras perguntas foi: "Você o executou no Checkstyle?" O cumprimento dos padrões de codificação foi amplamente automatizado e desviou a atenção do examinador exigente. Foi maravilhosamente fácil fazer com que o Checkstyle realce uma assinatura de método, clique com o botão direito do mouse e altere uma variável para final. Também poderia consertar os recuos e chaves, para que o código de todos tivesse uma aparência semelhante. Está faltando um Javadoc para uma função pública? O estilo de verificação sinalizará a função.

(Remover o cheiro do código é mais importante que a formatação consistente. Esse é um benefício das ferramentas automatizadas.)

Eu colocaria ferramentas automatizadas como o Checkstyle menos como impondo o mesmo formato e mais para incentivar uma aparência semelhante. E quando você está pastoreando gatos, uma ferramenta automatizada pode ajudar a aprimorar habilidades e reduzir o cheiro do código sem ferir egos frágeis.

rajah9
fonte
5
Ponto de saída único? Existem certos princípios de estilo com os quais eu realmente não concordo. (Se várias saídas são um problema, a função / método é muito longo, em primeiro lugar ...)
Donal Fellows
@DonalFellows, Checkstyle nos deu um ponto de referência a partir do qual poderíamos mudar para as preferências do comitê. Havia muitas exclamações da natureza: "Não vejo por que eles colocam esse padrão!" Enquanto o OP estava perguntando sobre formatação consistente, acho que a ferramenta automatizada oferece muito mais sem problemas adicionais.
precisa saber é
6

Se você seguir o mesmo IDE e incorporar algumas ferramentas de formatação, é uma boa ideia, porque você não está exigindo muito esforço. Mantenha as regras simples, com foco na legibilidade e não na retenção anal . Esse deve ser o bastão de medição.

Embora uma bola de lama consistentemente formatada seja melhor do que apenas uma bola de lama, seria melhor gastar seu tempo limpando-a em vez de ficar muito exigente sobre onde os colchetes vão. Não entre no gerente de cabeça de alfinete que sente que está fazendo seu trabalho contando espaços de recuo durante uma revisão de código, além de garantir que as novas folhas de rosto estejam nos Relatórios TPS .

As preferências pessoais são exatamente isso e raramente melhoram a produção: https://stackoverflow.com/questions/249432/whats-the-reasoning-behind-the-different-brace-forms

Se isso acontecer, supere-o e faça algo.

JeffO
fonte
6

Eu recomendo fortemente que os humanos apliquem a formatação do código e que pequenas infrações sejam graciosamente ignoradas ou corrigidas. Razões para isso são, brevemente,

  1. A máquina erra no pior momento possível e, geralmente, quando você está usando um novo recurso de idioma. Como ele irá lidar com fechamentos em Java, etc? Jalopy tem problemas com enumerações com funções-membro.
  2. Eu acho que é um fardo muito razoável colocar o programador para produzir um código para a empresa que se parece com o código da empresa. Eu achei útil mencionar que é assim que o código é formatado "aqui", não como todo o código deve ser formatado em qualquer lugar. A empresa anterior pode ter escolhido um caminho diferente, e tudo bem. Não muito diferente da linguagem vernacular, existem expressões específicas à sua cultura de código que você deseja destacar.
  3. A aplicação da sintaxe do código é melhor realizada com revisões de código:
    1. Se a formatação for importante, ela atrai sua organização a fazer revisões de código. Isso é de grande benefício.
    2. Se uma regra de formatação for violada, um ser humano poderá examiná-la e julgar melhor do que uma máquina se a intenção for transmitida de maneira mais limpa. Isso é muito raro, mas acontece ocasionalmente.

Em relação à "legibilidade => produtividade", a estrutura de código (como classes e funções de responsabilidade única) comprará muito mais rapidamente do que a formatação do código. A formatação de código pode ser uma ajuda, mas mentes diferentes analisam as declarações de maneira diferente - nem todos serão "mais produtivos". Eu gostaria de dobrar a estrutura do código sobre a formatação, porque isso é algo que também o levará a fazer revisões de código e levará a equipe a pensar sobre como o programa funciona, não sobre a aparência de um único loop.

Não sou muito fã de Design Orientado a Domínio, mas é um modelo recente que tem uma idéia MUITO bem definida de como o código deve ser estruturado e as convenções de formatação de código fluem naturalmente a partir de um programa estruturado de Design Orientado a Domínio. Mais uma vez ... Eu não gosto de DDD, mas é um ótimo exemplo, porque é muito bem definido.

Suponho que o tema desta resposta seja: faça revisões de código e deixe a formatação fluir a partir da cultura e fora do processo de revisão.

Sam
fonte
Tx, não é um ponto de vista ruim disso. Mas, novamente, é um trabalho extra se, durante cada revisão, o revisor também verificar o formato.
Stijn Geukens
3
É um clique extra para chamar uma linha em algo como Fisheye como "recuo inconsistente" ou "chave aberta on-line sozinha", então, sim, é mais do que zero esforço. No entanto, se isso estender as revisões de código em mais de literalmente 1 minuto, haverá um grande problema. Após uma semana da equipe revisando seu próprio código, todos devem ser muito rápidos em perceber o código "errado" e retocá-lo.
Sam
4

Geralmente, supondo que você contrate desenvolvedores razoáveis, é uma má idéia impor um formato de código universal. No entanto, é uma boa idéia adotar diretrizes de código .

Eu nunca vi um conjunto de regras de formatação de código que otimiza a legibilidade em todos os casos. Da mesma forma, não existem regras gramaticais 100% aplicáveis ​​em inglês: nossos cérebros simplesmente não são conectados dessa maneira. Portanto, use as diretrizes, mas dê aos desenvolvedores a liberdade de substituí-las conforme entenderem.

Dito isto, uma regra mais difícil de "seguir a convenção de código que já existe no arquivo / projeto" é boa.

Mas lembre-se de que a formatação contribui muito menos para a legibilidade do que simplesmente a organização lógica do código. Eu já vi muitos códigos espaguetes ilegíveis com formatação perfeita!

Keredson
fonte
2

Eu não acho que haja uma resposta simples para isso. Não é uma pergunta de sim ou não. Embora eu acredite que o estilo e as convenções de nomenclatura sejam importantes até certo ponto, também é muito fácil perder muito tempo pensando sobre isso. É melhor responder pelo exemplo.

Em um projeto em particular, eu não participei de convenções. Todo desenvolvedor fez as coisas à sua maneira. Devido à relativa inexperiência dessa equipe, ir de uma aula para a outra foi realmente chocante. O estilo era menos problemático do que o problema das convenções de nomenclatura. Um desenvolvedor referenciaria elementos da interface do usuário com notação húngara terrível (uma prática boba na era dos IDE modernos), um nomeava membros privados de uma maneira e outro os nomeava de maneira diferente. Você nunca sabia o que estava olhando.

No extremo oposto, uma equipe usou o StyleCop (este era um projeto .Net) como parte de seu processo de criação. O pior é que eles também usaram a maioria das regras padrão. Então, você faria algo totalmente normal em termos de espaçamento entre linhas ou posicionamento de colchetes, e a construção vomitaria por causa disso. Foi desperdiçado muito tempo adicionando espaços e linhas às coisas, e todos, incluindo os caras que insistiram em usar o StyleCop, acabaram fazendo isso quase todos os commit. Foi um enorme desperdício de tempo e dinheiro.

Então, o que estou dizendo aqui é que ser inflexível não é a resposta, mas estar no Oeste Selvagem também não é. A resposta real é encontrar o lugar que faz mais sentido, o que, na minha opinião, é não ter ferramentas automatizadas verificando coisas, mas também não jogando as convenções ao vento.

Jeff Putz
fonte
2

Meu principal argumento contra o estilo comum de codificação é que um programador experiente é usado para ler seu próprio estilo. Você pode treinar a mão para escrever um estilo específico, mas é quase impossível treinar os olhos para entender um estilo que você odeia. Um programador grava um pedaço de código uma vez e depois o lê repetidamente durante o desenvolvimento e a depuração. Se toda vez que ele lê seu próprio código, ele se esforça para entendê-lo, uma vez que foi forçado a escrevê-lo em um estilo MAU, ele será muito infeliz e menos produtivo. Isso é da minha experiência.

Não estou muito familiarizado com o Eclipse, mas o formato automático para salvar parece uma ideia horrível. Um desenvolvedor deve ter controle completo sobre seu código, independentemente de o estilo de codificação ser imposto ou não. A operação 'save' não deve alterar um único caractere sem o consentimento explícito do usuário.

Se sua empresa vender código fonte, o estilo de codificação será mais importante, mas se você vender código compilado, será muito menos relevante.

Esperar que o estilo de codificação torne o codificador original menos distinguível e impeça as guerras do ego é besteira no melhor dos casos e estúpido no pior dos casos. Grandes programadores sempre produzem código elegante, independentemente do estilo.

Também sou bastante favorável a dar a todos os desenvolvedores a propriedade de unidades de código específicas e a não permitir que todos toquem cada parte do código livremente. Desenvolver unidades inteiras no código e ser responsável por elas permite que o desenvolvedor se orgulhe de seu trabalho e o impeça de desenvolver códigos ruins, sabendo que os bugs retornarão para caçá-lo.

Por fim, qualquer pessoa com estilo de codificação profissional sempre assume que seu próprio estilo de codificação será selecionado e todos os outros seguirão. Imagine que o estilo de codificação que você menos gosta de todos os seus co-desenvolvedores seja selecionado como padrão. Você ainda é a favor da imposição de estilo de codificação?

Gur
fonte
2

Um formato para governar todos eles ... é realmente ideal?

É como dirigir o carro de outra pessoa ...

Claro que você pode entrar e dirigir qualquer carro, mas estará mais seguro, mais confortável e menos propenso a bater se dedicar algum tempo para ajustar o assento, o volante e os espelhos de acordo com SUA preferência.

Com o código, a formatação afeta seu conforto na leitura e compreensão do código. Se estiver muito longe do que você está acostumado, será necessário mais esforço mental. É necessário infligir isso aos desenvolvedores?

+1 a todos os benefícios mencionados até agora, mas ...

A imposição automática vem com custos que precisam ser considerados:

-1 ao fato de que os formatadores de código não entendem a estética da formatação de código. Quantas vezes você teve um formatador de código destruído um bloco de comentários que estava bem alinhado em forma de tabela? Quantas vezes você propositadamente alinhou uma expressão complexa de uma certa maneira para aumentar a legibilidade, apenas para que a formatação automática a transformasse em algo que "segue as regras", mas é muito menos legível?

Às vezes, existem soluções alternativas para essas coisas, mas os desenvolvedores têm coisas mais importantes em que pensar do que como impedir que o formatador automático manipule o código.

Possui regras de formatação, mas permite liberdade para aplicar o bom senso.

swpalmer
fonte
2
Eu concordo absolutamente! Os formadores automáticos são burros.
Łukasz Wiktor
1

Bons desenvolvedores são pessoas criativas, dê a eles alguma licença artística. "Mantenha as coisas simples" deve ser o mantra dos programadores. Eu tenho duas regras:

Regra 1: forneça variáveis ​​/ cursores / objetos / procedimentos / o que for NOME SENSÍVEL. Nomes inequívocos que trazem significado e entendimento ao seu código.

Regra 2: use recuo para mostrar a estrutura do seu código.

É isso aí.

Jonesi
fonte
1
Você poderia explicar por que esse é o caso? Como deixar cada desenvolvedor ter uma licença artística (que difere entre os desenvolvedores no mesmo projeto) cria uma idéia melhor do que ter todos eles no mesmo formato? Existem problemas seus que a alternativa não resolve? E vice versa?
Eu acho que o argumento que estou tentando (e falhando) é que o uso de nomes sensíveis e o recuo do seu código são muito mais importantes em relação à legibilidade / manutenção do que outras regras que você pode inventar. Não estou dizendo que todos na equipe devem ter seu próprio estilo, só que, se o fizerem, e daí?
Jonesi
Considere se eu tiver um formatador de código no eclipse configurado de uma maneira e sempre reformatar meu código ... e você tiver um configurado de maneira um pouco diferente ... e continuaremos modificando o mesmo código. Essa 'licença artística' causa problemas nas diferenças?
Embora eu entenda o que você está dizendo, acho que um problema com o seu ponto de vista é quando você tem estilos muito diferentes (observe, não apenas errado). Isso pode causar problemas e atrasos reais ao mesclar esses diferentes estilos.
precisa saber é o seguinte
1
Sim, entendi seu ponto, Daniel. Devo adicionar uma terceira regra: Ao modificar o código existente, adapte-se ao estilo do código que você está editando. Isso é o que eu faria naturalmente se estivesse corrigindo um programa antigo.
Jonesi
0

Para mim, a principal vantagem de um formato comum aplicado automaticamente é que ele ajuda no rastreamento de alterações e nas revisões de código. O git (e a maioria das outras ferramentas de controle de origem) pode mostrar diferenças das versões anteriores dos arquivos. Ao impor um estilo comum, minimiza as diferenças entre as preferências do programador.

Kristian H
fonte
-1

São idiomas, não códigos. Nós, humanos, temos mais de 6000 idiomas, por isso os traduzimos. Portanto, se você deseja que seus "códigos" se comuniquem, precisará fazer seus ajustes. Você vê que os usuários precisam alterar nossos formatos de dados para não perder nossos dados.

vic belleli
fonte
-2

Eu diria que não é. Uma estrutura / formato de código comum entre uma equipe é definitivamente uma coisa boa, mas a imposição automática não é. Isso deve ser feito por seres humanos, não pelo computador.

Meus maiores problemas com o conceito são

  1. Se estou escrevendo um código em um formato e ele é reformatado automaticamente, que incentivo existe para realmente aprender esse formato?
  2. Seguindo esse ponto anterior, se você não aprender o formato, todo o ponto de formatação automática (para tornar o código mais fácil de ler e modificar) será completamente perdido. Você ainda precisa dedicar algum tempo para descobrir a formatação enquanto lê o código, porque ainda não aprendeu esse formato.
  3. Eu acho que seria uma experiência chocante como desenvolvedor escrever uma aula um dia, fechá-la e retornar no dia seguinte para ver que é completamente diferente. Isso significa que, além de outras pessoas precisarem aprender seu código, você precisa aprender seu código.
  4. Também poderia incentivar a codificação lenta. Em vez de pressionar o desenvolvedor para aprender o formato, eles podem escrever em qualquer formato sob o sol e ele parecerá automaticamente da maneira que todo mundo quer. Isso remonta ao ponto 2, onde você não aprende o estilo e ainda não consegue lê-lo corretamente.

Agora, posso estar inclinado a dizer que executar um formato automático em um projeto que está totalmente encerrado seria uma boa idéia. Isso iniciaria todos os desenvolvedores com o mesmo pé do projeto quando você corrigisse / adicionasse recursos posteriormente. Durante o desenvolvimento ativo, no entanto, acho que é uma escolha muito ruim.

Basicamente: coloque a responsabilidade do funcionário em aprender o estilo da empresa, não force o código a ser algo que não é.

Josh Janusch
fonte
+1: Bons pontos, embora não tenha certeza de que eles superam os motivos a favor da reformatação automática. Por que os votos negativos?