Formatar código de maneira ruim ao usar um VCS?

24

Quase sempre formato meu código antes de me comprometer para garantir que ele seja feito corretamente. A maioria da minha equipe realmente não se importa e nem sempre formata seu código adequadamente (pequenas coisas que não afetam o código, mas afetam a legibilidade ao tentar mantê-lo).

Eu instalei recentemente as ferramentas avançadas do VS que possuem a opção "Formatar ao salvar" e fiz uma alteração em um arquivo que não foi formatado anteriormente. O vice-presidente de desenvolvimento veio até mim e me repreendeu pela formatação, pois aparece na ferramenta de mesclagem como tendo quase todo o arquivo alterado, em vez de apenas uma linha ou duas (para que ele não possa ver exatamente o que eu modifiquei facilmente) e me disse para desativar o formato ao salvar no futuro. Embora eu entenda essa preocupação, às vezes acho difícil classificar o código não formatado e, na IMO, ele deve ser formatado adequadamente o tempo todo. Observe que não estou apenas reformatando as coisas por um capricho., Mas enquanto escrevo código, usarei a ferramenta elétrica ou pressionarei o comando key para formatar o texto para facilitar a leitura, e no SVN isso aparece como uma modificação.

Então eu pergunto, sempre a formatação do código é realmente uma coisa ruim? Suas preocupações são mais válidas do que garantir que o código seja legível?

Allan Wight
fonte
8
ele está certo, então por que não fazer com que toda a equipe use a ferramenta de formatação ao salvar também, todos obterão um código bem formatado que é fácil de ler e fácil de ver.
Gbjbaanb
12
A maioria das boas ferramentas de comparação de arquivos tem um filtro para "diferenças sem importância" ou "ignorar espaços em branco". Alguns, como o Beyond Compare, são fornecidos com filtros específicos do idioma pré-construídos. Use-o para sua vantagem, se você o tiver.
Michael K
7
A formatação do código é tão importante quanto as alterações feitas. A legibilidade deve ser uma das maiores prioridades quando você está em uma equipe. Seu vice-presidente deve saber disso e se preocupar com isso.
Edgar Gonzalez
@ Edgar: +1. O vice-presidente está sendo muito exigente. Legibilidade primeiro ... e uma opção de ignorar espaço em branco significa que isso não é grande coisa. E isso também significa que há um problema maior, porque o resto da equipe não se importa. O vice-presidente deve estar mais preocupado com isso.
quickly_now

Respostas:

41

Primeiro, sua equipe precisa escolher uma convenção de formatação e cumpri-la. Você precisa chegar a um acordo e fazer com que todos cumpram, para que não haja pessoas brigando pelo que as coisas deveriam ter. Isso não deve ser apenas algo que você faz por conta própria.

Quanto à sua verdadeira pergunta. Formatar código não é uma coisa ruim. O que é ruim é fazer grandes alterações de formatação no mesmo commit das alterações de código. Quando sua equipe chegar a um consenso sobre como as coisas devem ser formatadas, faça uma passagem pelo código e formate tudo. Verifique isso por si só. A mensagem de confirmação deixará claro que as alterações são apenas espaços em branco e não funcionais. Então, quando você precisar fazer alterações funcionais, elas estarão em um commit diferente para que possam ser vistas claramente.

unholysampler
fonte
ainda não ajuda se você deseja comparar alterações de várias revisões atrás, mas é melhor do que a alteração de código + as alterações de formato de uma só vez. Obviamente, essa resposta também se aplica à refatoração.
21711 Ghjbaanb
11
+1: Além disso, é bom usar algo como Stylecop ou alguma outra ferramenta que formata automaticamente e aplica estilo. Em seguida, sincronize as configurações entre todos os membros da equipe para que a formatação seja consistente entre todos e você não precise necessariamente se lembrar qual é a regra de formato "correta".
Ryan Hayes
3
Se o OP foi repreendido por tentar formatar um documento, algo me diz que ele não poderia sugerir o uso do StyleCop.
Wayne Molina
3
@gbjbaanb: Sim. É por isso que é melhor tomar esse tipo de decisão no início. O projeto em que estou agora tem as configurações do formatador Eclipse verificadas no repositório, para que saibamos que todos têm as mesmas configurações.
Unholysampler
11
@quickly_now: É por isso que temos gerentes com direitos de veto. Se as pessoas não concordam, podem tomar uma decisão.
Unholysampler
29

Não, o código de formatação é muito importante . No entanto, as confirmações devem ser feitas em dois grupos:

  1. Alterações cosméticas - qualquer coisa que torne o código mais legível.
  2. As outras mudanças - tudo o mais que afeta o código.

Use a mensagem de confirmação para indicar que apenas cosméticos foram alterados. Eles podem ser facilmente ignorados ao procurar modificações mais substanciais.

JK
fonte
3
Além disso, também é uma boa prática decidir sobre uma determinada convenção de formatação entre sua equipe. Não apenas formate o código de outras pessoas sem discutir isso primeiro.
Steven Jeuris
Sim ... Mas você sabe, às vezes é tão tentador formatar essa bagunça "enquanto você está nisso". Além disso, tentar separar as mudanças cosméticas das funcionais pode ser um problema se você usar o VS e ele formatar algo automaticamente. Oh, e ninguém vai dizer que você está fazendo alguma formatação estúpido enquanto você tem tarefas muito importantes para fazer, olhando para cometer história
Dyppl
10

Vocês dois têm razão, mas podem conseguir o que querem. Formate o código primeiro, verifique apenas essa alteração. Em seguida, faça as alterações funcionais e faça o check-in como uma segunda etapa.

PeterAllenWebb
fonte
3
Eu acho que essa é a melhor solução para sua situação atual, mas você deve conversar sobre isso com sua equipe. No entanto, você tem um problema maior, que é a falta de um padrão de codificação.
Thomas Owens
2
Acordado. Eu me pergunto se o ambiente do OP é um daqueles locais de cowboy em que os padrões são evitados para "pôr em marcha as coisas rapidamente".
Wayne Molina
4

Também sou um seletor de formatação, então aqui estão algumas dicas:

  • Primeiro passo necessário: peça à equipe que chegue a um acordo sobre alguns padrões básicos de formatação, como guias versus espaços, posições entre parênteses, estilos de comentários etc. Agora, suas alterações de formatação não serão uma surpresa completa para todos, e você não irá nos dedos dos pés.

  • Limpe a formatação apenas em torno do código que você altera. Se você fizer alterações em apenas uma função, limpe essa função. Pelo menos com o tempo, você terá um código mais bonito.

  • Faça grandes revisões de formatação como uma confirmação separada, sem outras alterações de código. Você só deve fazer isso quando tiver menos probabilidade de comparar o código após a alteração com antes da alteração, pois comparar um diff como esse pode ser irritante. Eu costumo fazer limpezas como a primeira coisa antes de um grande desenvolvimento nesse código.

  • Obtenha uma boa ferramenta de diferenciação que possa fazer marcações dependentes do idioma de alterações significativas e não significativas. Meu diff também favorito Beyond Compare marca as alterações reais do código em uma cor e as diferenças de espaço em branco / comentário apenas em outra.

edite para mais uma dica:

  • Isso varia de idioma para idioma, mas, para as alterações mais cosméticas do código, você deve comparar os binários compilados antes e depois de uma limpeza importante para ter certeza absoluta de que não estragou tudo.
John
fonte
Contanto que você não inclua tags de VC no binário (ou informações de compilação).
Vatine
2

Você não deve reformatar a formatação e confirmar alterações no código de outras pessoas, a menos que:

  • você é o gerente que está tentando estabelecer padrões de codificação de equipe
  • seu gerente solicitou que você limpe o código para aderir aos padrões de codificação da equipe
  • você está limpando o código de um desenvolvedor que não está mais em sua equipe para aderir aos padrões de codificação da equipe.

Você notará em todos os casos que me refiro aos padrões de codificação da equipe. Acredito firmemente em padrões de codificação razoáveis ​​e acordados para a equipe. Se você os possui, o desenvolvedor original deve voltar e limpar seu código para aderir aos padrões da equipe, não o faça pelas costas. Se você não possui padrões (e deveria), não deve modificar o código de outro membro da equipe para aderir às suas filosofias, principalmente pelas costas. Lembre-se de que você faz parte de uma equipe e, embora os padrões de codificação sejam importantes, a confiança e o respeito entre os membros da equipe também são importantes.

cdkMoose
fonte
"Atrás das costas": isso remonta às questões psicológicas da propriedade do código (ou da guerra pelo território).
rwong
2
"Código de outras pessoas" é uma maneira interessante de dizer isso. Trabalho no produto da minha empresa, compilado a partir do código que minha empresa possui, no qual trabalhamos os membros da minha equipe. Não está nas suas costas, de forma alguma, para ajustá-lo aos padrões enquanto trabalhamos nele. No entanto, concordo que a solução ideal é fazer com que o desenvolvedor original a limpe de acordo com o padrão.
Caleb Huitt - cjhuitt
@ Caleb: fica difícil se eles simplesmente se recusam.
quickly_now
Por "código de outras pessoas", não quero dizer propriedade, quero dizer algo que eles escreveram e acreditam que ainda são responsáveis ​​pelo suporte. Na ausência de padrões de codificação, se eu implementar uma classe com 1.000 linhas de código e você fizer alterações em 2 linhas para corrigir algum comportamento e reformatar o arquivo inteiro, ficarei muito surpreso quando abrir o arquivo. Como membros de uma equipe, não devemos fazer isso um com o outro. Se você verificar esse arquivo com uma reformatação completa e nem me avisar, isso não é muito amigável para a equipe.
cdkMoose
Na discussão original do OP, li que para ser um ambiente sem padrões de codificação (ou não bem impostos), foi por isso que respondi como tal. Nesse ambiente, um desenvolvedor não deve impor seus padrões a outros.
cdkMoose