Eu odeio um dos nossos padrões de codificação e isso me deixa louco, como processá-lo? [fechadas]

18

Disclaimer : Não é tão exagerado como o título sugere, mas ainda me deixa desconfortável. Eu só vou expressar honestamente, então leve com um grão de sal. Apenas finja que estou falando sobre esse padrão de codificação com o qual você não gosta de trabalhar.

Edit : O fato de eu não gostar, não significa que não o uso ou imponho.


Decidi fazer esta pergunta com o espírito de como superar um padrão que você não gosta, para não obter ajuda sobre como argumentar melhor como ele pode ser alterado (embora sejam apreciados quaisquer comentários sobre esta última parte). Além disso, trabalho em uma grande empresa e é improvável uma mudança de algo que vive há tanto tempo e que importa tão pouco.

O padrão é o padrão de abertura-cacheado-cinta-em-linha dedicada:

somefunction()
{
    //...
}

Em vez do * claramente superior * (observe o tom de brincadeira / frustração):

somefunction() {
    //...
}

Meus argumentos pessoais contra o padrão:

  • Incha código : linhas desnecessárias extras
  • Mais difícil de digitar : embora provavelmente seja apenas eu lutando com o padrão, sei que um pressionamento de tecla extra não é tão ruim assim.
  • Não é mais fácil de ler : começo a ler uma declaração de função, se instrução, ou qualquer outra instrução de empilhamento de escopo e já não preciso procurar uma chave de abertura. Blocos aninhados com esse padrão me deixam com raiva por algum motivo.
  • Usado por pessoas que têm experiência com o Microsoft IDE : acho que deveria haver uma razão argumentada (ou mais) por trás de um padrão, e não apenas adotá-lo por paradigma.

Seus argumentos (e minha maneira de responder internamente a eles):

  • Mais fácil de ler, porque você pode ver onde os blocos começam e terminam imediatamente : não consigo entender isso, de que serve o bloco se você não sabe do que ele pertence, então você deve ler ao contrário.
  • Eu usei em um IDE da Microsoft e gostei : Uhh ... ok?
  • Está no padrão : * encolhe *

Eu sou o único que luta com uma posição opinativa contra um padrão específico ?, como você superou isso ?, qual é a sua opinião sobre qual deveria ser esse padrão em particular (apenas por diversão)?

dukeofgaming
fonte
6
por quanto tempo você usa o padrão que "odeia"? e você usa outros padrões "em paralelo"? Quero dizer, poderia ser apenas uma questão de se acostumar com isso? Tenho que admitir que eu costumava odiar o mesmo padrão, mas depois de cerca de um ano escrevendo exclusivamente dessa forma esse ódio desapareceu completamente
mosquito
54
Você está omitindo o espaço em branco claramente necessário entre o final da declaração de função e o colchete! Você deve queimar!
pap
5
Vive com isso. Esse é um problema muito, muito pequeno. Fique feliz que essa é a única coisa que está incomodando. Se você mudar o idioma, também poderá se ajustar ao novo estilo. Portanto, trabalhar por algumas semanas com ele deve corrigir esse sentimento de que está "errado".
Schlingel
8
Used by people who come from a Microsoft IDE backgroundNão é coisa da Microsoft, por exemplo, o Linux Kernel e o K&R usam o mesmo estilo.
Lucas
5
Se você gastar toda a sua energia se irritando com o trivial, não terá mais nada para as coisas que realmente importam.
Blrfl

Respostas:

47

Se você quiser superar isso - houve uma citação de Torvalds:

Programadores ruins se preocupam com o código. Bons programadores se preocupam com estruturas de dados e seus relacionamentos.

Agora considere: onde ele coloca os programadores que se preocupam com algo tão pequeno como o estilo de reforço imposto pelo padrão de código? A sua base de código é tão primitiva que o suporte é o único problema que vale a pena discutir?

scrwtp
fonte
2
Eu concordo inteiramente. Se você resolveu todos os outros problemas e decidir onde colocar os curlies é a coisa mais importante restante, você está se saindo melhor do que qualquer outro projeto de software existente.
4
A sua base de código é tão primitiva que o suporte é o único problema que vale a pena discutir? - Isso seria uma pergunta retórica - essa base de código nunca existiu na história!
precisa saber é o seguinte
12
Gostaria de acrescentar que Linus enlouquece se formatar git commit mensagens "incorretamente" wired.com/wiredenterprise/2012/05/torvalds_github
Giles Roberts
Isso porque ele estava comentando o fato de você estar entrando em um projeto, você respeita o guia de estilo do projeto e envia propostas para alterá-lo ... caso contrário, atenha-se ao estilo deles!
precisa
1
@GilesRoberts: Linus fica louco se você formatar as mensagens de confirmação do git "incorretamente", porque não funciona com o processo de revisão estabelecido. Um que funciona bem para o projeto há 20 anos e envolve centenas de pessoas. Algumas regras de processo são muito mais importantes que as de formatação de código.
Jan Hudec 13/09/13
66

Algumas pessoas gostam do seu jeito e outras não. De qualquer maneira, alguém vai ficar irritado. É apenas a sua vez desta vez. Chupe e continue com o trabalho.

Cromulento
fonte
5
Acho que ele está perguntando como deve superar isso. Qual é realmente uma pergunta muito diferente.
Zachary Yates
18
Não seguir o padrão cria um problema pior e irrita a todos . "Suck it up" de fato!
Frank Shearar
2
Concordo. Você apenas tem que lidar com isso.
Cody
3
Honestamente, isso também me frustraria, mas infelizmente "chupar" é a resposta certa.
precisa saber é o seguinte
27

O padrão da equipe está documentado? Se for, há algum motivo no guia de estilo? Honestamente, eu tive que engolir isso várias vezes e fazer um trabalho real. Existem problemas piores, mas eu sinto que você ainda está irritado (a propósito, eu concordo com você no estilo).

O que me ajudou a superar isso:

  1. Percebeu que existem benefícios reais para um único estilo (não importa qual seja). Ou pelo menos um monte de gente pensa assim .
  2. Exatamente o que você acabou de fazer, escreva por que isso parece errado, para poder postar o argumento bem no futuro.
  3. Use uma ferramenta de estilo, pelo amor de Deus , ele salvará sua sanidade. ReSharper , CodeMaid , StyleCop , JSLint , CheckStyle , etc. ... mesmo Visual Studio irá fazer isso por você .
  4. Dê um pontapé neste projeto e esteja pronto para o próximo quando puder definir os padrões.
Zachary Yates
fonte
7
+1 para (3), pontos de bônus se você configurá-lo como um gancho pós-pull / pré-push para o SCM em que você está.
Martin Green
1
As ferramentas de estilo fazem com que esse problema desapareça e as pessoas colocam seu dinheiro onde está a boca. Se você realmente looooooove encaracolado suspensórios uma forma particular, então você vai mudar sua configuração de estilo para fazer tudo acolhedor e confortável para si mesmo. Caso contrário, cale a boca para obter codificação.
Calphool
16

A superioridade de uma convenção sobre a outra é * claramente arbitrária * .

Os problemas de legibilidade que você enfrenta, ou seus colegas de equipe enfrentariam com seu padrão, são apenas uma resistência psicológica à mudança.

O argumento objetivo de legibilidade é a favor da * consistência * em toda a base de código.

mouviciel
fonte
"apenas" uma resistência psicológica à mudança? As resistências psicológicas à mudança podem ser bastante grandes.
Giles Roberts
8

Lembre-se de uma época em que você tinha certeza de que estava certo sobre alguma coisa e, durante um período de tempo, percebeu que estava errado, ou pelo menos que estava exagerando há tantos anos. Considere a possibilidade de estar errado novamente e dê ao novo padrão de codificação ou tempo de processo para convencê-lo.

Meus próprios padrões de raiva quando eu era relativamente novo em codificação (digamos cinco anos na minha carreira) eram se os identificadores de múltiplas palavras deveriam ser WrittenLikeThisou written_like_this. Eu nem vou dizer qual eu gostei, mas o ponto é que depois de algum tempo eu mudei de lado e depois de mais algum tempo eu não me importei.

Kyle Jones
fonte
Sim, estou dividida entre like_this e likeThis também. Ultimamente, estou me inclinando para o estilo todo em minúsculas, é mais claro de ler.
precisa saber é o seguinte
1
Claro, agora estou preso ao likeThis em alguns projetos. Bem, convenções de nomenclatura não são muito importantes no grande esquema das coisas.
precisa saber é o seguinte
1
Exatamente. Não importa em que linha está a chave de abertura. Não importa se você escreve MultiWordIdentifiers ou multi_word_identifiers. Qualquer que seja o padrão usado por sua empresa, siga-o e, em alguns meses, será difícil lembrar que você sempre quis fazer o contrário.
precisa saber é o seguinte
8

A diferença padrão que você está descrevendo com o aparelho é amplamente arbitrária. Ambas as formas são igualmente boas e para uma empresa, desde que todos façam o mesmo, tudo é bom.

O "claramente superior" de que você está falando é o tipo de superior que as pessoas falam quando falam sobre coisas "às quais estão acostumadas".

Você vai se acostumar com isso em breve e daqui a um ano, o outro caminho será "claramente superior".

Em resumo: lide com isso.

Pieter B
fonte
uma resposta claramente superior
Mawg diz restabelecer Monica
5

Esse assunto em particular equivale a uma guerra religiosa entre aqueles que preferem um estilo ao outro. Muito poucas pessoas são ambivalentes ...

Em última análise, nem está certo nem errado.

Os guias de estilo e os padrões de codificação existem por várias razões - e um aspecto importante é garantir a uniformidade do layout, que visa reduzir o número de erros óbvios e melhorar a manutenção.

Eu sou o único que luta com uma posição opinativa contra um padrão específico?

A resposta curta é "Não", você não é o único. Mas há coisas mais importantes com que se preocupar. Mesmo nos padrões para os quais se insere, sempre haverá compromisso - testemunhe alguns dos aspectos que chegaram ao C99 e C12 que não fazem sentido para mim.

Até o MISRA-C (sobre o qual tenho influência direta) contém itens com os quais pessoalmente não concordo - mas posso entender por que os outros sentem a justificativa.

como você superou isso?

E é aí que reside a resposta - em vez de se concentrar no motivo pelo qual você não gosta pessoalmente, tente entender por que a pessoa / pessoas que concordaram fizeram isso.

As regras geralmente são introduzidas (em uma porta que está fechando depois que o cavalo trava), para resolver um problema anterior. E se a regra ainda não faz sentido, fale com o proprietário padrão e tente "educá-lo".

Andrew
fonte
4

Eu acho que você só precisa seguir em frente. Vou tentar abordar suas anotações com minhas próprias opiniões:

  • Código Bloats

    Uma linha de código extra não é um código inchado, a menos que você esteja escrevendo centenas de métodos em uma única classe, que adicionará centenas de linhas extras. Então, novamente, se você tiver centenas de métodos em uma única classe, terá outro problema.

  • Mais difícil de digitar

    Não posso mais discordar de você, é preciso pressionar a tecla Enter para chegar à próxima linha. E é mais difícil digitar?

  • Difícil de ler

    Eu sinto que cada linha de um pedaço de código deve ter uma função específica. Depois disso, você precisaria definir o nome do método em uma linha e, em seguida, as chaves de abrir e fechar em suas próprias linhas separadas.

  • Usado por pessoas que têm experiência em MS IDE

    Uhh ... ok?

Em resumo, parece que você está dizendo sobre ser um desenvolvedor .Net em oposição a qualquer outro tipo de desenvolvedor, como se fosse inferior, porque eles usaram um IDE com o padrão deste padrão.

stuartmclark
fonte
1
-1 Eu concordo em todos os pontos, mas não acho que nenhuma opinião sobre cada um dos vários pontos seja particularmente útil.
Caleb
4

Eu sou o único que luta com uma posição opinativa contra um padrão específico?

Claro que não. Reuniões para determinar os padrões de codificação são horríveis! Eles se arrastam por horas e os participantes se tornam pessoalmente investidos em obter suas próprias idiossincrasias favoritas (e invariavelmente erradas, exceto as minhas) consagradas no padrão. No final, ninguém está feliz com o resultado. Se algo pode ser pior do que a reunião dos padrões de codificação, são as reuniões formais de revisão de código nos vários meses que seguem a determinação do padrão: algumas pessoas tentam adotar o padrão, enquanto outras (intencionalmente ou não) o ignoram e você obtém horas de feedback como: Nas linhas 132, 142, 145, 181, 195 e 221 do SillyFileConverter.cpp, você coloca a chave de abertura na mesma linha quando o padrão de codificação diz claramente que deve estar na linha a seguir !

como você superou isso?

À sua maneira, as reuniões ajudam. Mesmo se você simpatizar inteiramente com o cara que deixou a chave de abertura na mesma linha que a condicional, ou qualquer outra coisa, você ficará irritado com ele por desperdiçar seu tempo, não apenas sugando e seguindo o padrão estúpido. Se o cara é um cretino e faz a mesma coisa repetidamente, torna-se ainda mais irritante. Ficar chateado com esse comportamento torna muito mais fácil justificar a escrita em um estilo um pouco diferente do que você prefere - você certamente não quer ser esse cara , afinal.

Mesmo que você não seja submetido a análises intermináveis ​​de código formal, tente revisar seu próprio código especificamente para conformidade com o padrão. Não importa o que você pensa do padrão, você está apenas comparando o que escreveu com o que o padrão diz. Se você se desafiar toda vez que não cumprir, isso poderá fornecer algum feedback negativo necessário para ajudá-lo a adotar o padrão.

Caleb
fonte
"Envolva-se em um esforço de linguagem padronização ... Tenha o bom senso de cair fora desse processo linguagem padronização tão rapidamente quanto possível" - norvig.com/21-days.html
Beni Cherniavsky-Paskin
3

Com esse tipo de coisa, lembro-me de Gulliver em Lilliput. Os liliputianos estavam travando uma guerra pela qual, para abrir um ovo cozido. (O big endian original, pouca luta endian).

Tome como uma oportunidade de rir de si mesmo, eles realmente não vêm com frequência suficiente nos negócios.

Jaydee
fonte
2

Seu exemplo em particular é lamentável, pois é um com o qual alguns concordam e outros não. Discordo de seus argumentos contra, por exemplo, e tenho certeza que muitos outros também, assim como tenho certeza que muitos outros concordarão com eles. Quase me faz pensar que a questão deve ser encerrada, pois é tão subjetiva.

No entanto, a pergunta sobre como lidar com um padrão com o qual você não concorda é possível de responder. Eu acho que a resposta é que, onde as diretrizes de estilo existem e são acordadas e foram usadas, a resposta é apenas sorrir, suportar e lidar com isso. Considere que ter consistência é mais importante. Se a diretriz for imprecisa ou incorreta, pode haver um argumento para a mudança, mas isso é estilístico; portanto, não há argumento realmente separado da preferência pessoal.

Eu vim de um background Java originalmente, então segui o padrão que você mencionou. Eu então mudei para mais C ++ e C # onde o estilo que você odeia é usado. Mas não tem resposta certa ou errada. O mais importante é ter um padrão seguido por todos. Se um padrão de codificação é estilístico como esse e não está claramente errado, tentar argumentar que causará atrito na equipe.

Dragão de fogo
fonte
1
Como afirmado na pergunta, a questão realmente não é sobre o padrão específico; portanto, seu primeiro parágrafo não é pertinente.
Caleb
2

Um formatador + gancho de check-in é um bom começo. Mas não é suficiente, pois o que você escreve não é tão importante quanto o que você observa o dia todo. Em algumas situações, a abordagem do modo Óculos do Emacs - mantenha os arquivos no estilo deles, mas seja mais próximo do seu estilo - é atraente.

Minha experiência com ele - enfrentando exatamente o problema para o qual foi escrito, CamelCapsvs underscore_separated- foi que rapidamente se tornou mais irritante do que útil, mas por algumas semanas suavizou minha transição para (de má vontade) aceitar o estilo da empresa, além de fornecer uma saída para canalizar minha raiva ("ah, eu odeio, deixe-me ajustar as configurações novamente ... aí, pelo menos eu fiz alguma coisa ") ;-)

De qualquer forma, o modo Óculos não lida com o posicionamento da chave, você provavelmente não usa o Emacs e não lê o código exclusivamente no seu editor :-(
Mas o último ponto também é uma oportunidade - se você ler o código na maioria das vezes em uma ferramenta separada, você pode modificar isso para converter estilos sem se preocupar com o ruído de reformatação de ida e volta - porque é somente leitura! Especificamente, se você ler código em algumas interfaces da web, use Greasemonkey.

Aqui estão algumas idéias mais fáceis para mitigação leve:

  • Escolha uma fonte mais larga, mas não tão alta, para recuperar as linhas da tela perdidas.

    • Use a tela inteira com mais frequência, se disponível.
  • Configure chaves para serem destacadas em uma cor sutil (e fonte menor?), Tornando-as menos visíveis que o restante do código. O recuo deve ser suficiente para a leitura, esp. com o espaço vazio das {linhas ...

  • Certifique-se de que o seu editor destaque a chave de abertura correspondente quando terminar }- pode ajudar um pouco quando seus olhos vão instintivamente para o lugar errado.

  • Re "mais difícil de digitar": obtenha um editor real, configure-o para abrir uma nova linha automaticamente quando você pressionar {.

Beni Cherniavsky-Paskin
fonte
0

Vive com isso.

Isso é claramente cosmético e não altera nada na qualidade do código ou na sua produtividade como desenvolvedor. Nada vale a pena começar uma discussão.

Para esse tipo de padrão de codificação, eu selecionaria consistência em toda a base de código e legibilidade em qualquer abordagem "religiosa" específica (mesmo que bem fundamentada) a qualquer dia.

Pensar nisso como uma decisão democrática da maioria dos membros da equipe sobre um problema não tão importante pode ajudá-lo a superá-lo.

guillaume31
fonte
-2

É o padrão:

http://doh-san.blogspot.com/2005/10/five-monkeys.html

A maioria dos que dizem "é o padrão" está seguindo o princípio dos "cinco macacos".

Anon
fonte
1
você poderia explicar como isso responde à pergunta?
Gnat
Não é aparente?
Mawg diz restabelecer Monica
-5

Vá em frente e use o estilo que você deseja. Em seguida, use algum embelezador de código para alterar o código no formato padrão ou corrija seu próprio aplicativo pequeno que converterá o código do seu estilo para o estilo padrão especificado. Use o embelezador antes de verificar o código.
Você também pode fazer o inverso para alterar o código verificado do formato padrão para o formato, quando estiver trabalhando nele.

Manoj R
fonte
2
-1 O ponto da questão é como posso superar isso? , mas seu conselho se resume a não tentar superá-lo, continue fazendo do seu jeito. Isso não parece útil. Também não é muito prático - o uso de uma impressora bonita cria a possibilidade de danos colaterais, ou seja, após a conversão para o formato preferido e o retorno novamente, muitas linhas podem não ser exatamente iguais, mesmo que signifiquem exatamente a mesma coisa. Isso cria muitos problemas para as pessoas que procuram versões diferentes tentando descobrir o que realmente mudou.
Caleb
@ Caleb - Pode ser que sua experiência com o prettyprinter seja diferente. Estamos usando o Estilo Atrístico e ninguém tem queixas.
Manoj R
9
Qualquer desenvolvimento sério de software usará um sistema de controle de origem. A introdução de diferenças que não são importantes causará problemas e fará com que as pessoas que vêem as diferenças aborrecem - ou pior, causem conflitos de check-in.
Doug65536