Atualmente, estou trabalhando em um local que pode estar forçando os desenvolvedores a usar um formatador de código automatizado no check-in de controle de versão. Estou procurando opiniões de desenvolvedores sobre as vantagens e desvantagens de fazer isso ... como você acha que isso ajudaria ou dificultaria os desenvolvedores. Meu caso específico envolve Java / JSPs, mas acho que a pergunta poderia se aplicar a qualquer linguagem.
java
formatting
coding-standards
Nerdfest
fonte
fonte
Respostas:
Eu acho que é muito importante fazer isso. Aqui está o porquê:
Se você fizer isso, eu recomendaria que todos fizessem o check-in de todo o código e, em seguida, uma pessoa reformate toda a base de código e depois faça o check-in novamente para que haja uma mudança "gigante" definida para formatação (que todos podem ignorar), mas depois disso, todos os diffs são diffs de código real.
Se você fizer isso pouco a pouco, estará misturando alterações reais de código com alterações de formatação e as coisas ficarão desnecessariamente confusas no local da mudança.
fonte
Vou dar minha própria resposta aqui, pois as pessoas parecem estar adicionando vantagens. O que vejo como desvantagens são:
Simplificando, um conjunto de convenções não automatizadas define os requisitos mínimos de estilo / legibilidade, onde as convenções automatizadas definem o mínimo e o máximo.
Lembro-me de olhar para o VB (versão 5, talvez) e encontrar uma das coisas mais irritantes sobre ele, que seria reformatar à força o meu código e remover coisas acima e além de sua formatação básica.
fonte
Acho que a formatação forçada de código é ótima. Ele permite que um desenvolvedor percorra todo o corpus de código sem ter seus olhos refletidos em todos os lugares. Ter esse padrão em vigor também ajuda os desenvolvedores iniciantes a quebrar maus hábitos.
fonte
A principal desvantagem é perder a formatação personalizada onde realmente importa.
Imagine uma verificação de sanidade típica se () falhar se alguma das condições específicas estiver presente, mas não for atendida ...
Isso é legível graças ao recuo razoável, seguindo a estrutura lógica das condições.
Agora, sua ferramenta automatizada não tem idéia sobre a separação lógica de diferentes condições em linhas relacionadas. Não vê razão para que cada grupo de condições seja composto por 3-4 em uma linha e divida a próxima condição pela metade. Ou ele será dividido, uma expressão de comparação por linha. Pode até parecer mais bonito na tela, mas a lógica será perdida.
fonte
Eu adicionei uma resposta com desvantagens e apresentarei o que considero uma grande vantagem também.
Quando você usa uma reformatação automática de código no commit, ele realmente abre a possibilidade de variações de preferências pessoais sem o efeito usual de ter suas preferências infligidas a outras pessoas. Você pode ter seu código de formato IDE com um padrão comum na confirmação, mas exibi-lo no seu formato preferido sem afetar os outros.
Isso para mim é quase o Santo Graal da codificação baseada em convenções ... você obtém as vantagens de um formato de código comum, mas ainda permite que preferências pessoais sejam suportadas sem conflitos.
fonte
Depende das suas necessidades, mas algumas restrições são bastante úteis, por exemplo, todos os if () devem ser seguidos por chaves, pois é muito fácil entender isso se estiver refatorando.
Considere esse caso:
Se agora você deseja adicionar algum log ao caso if, pode escrever acidentalmente:
E de repente seu método sempre retorna
foo
.Editar: não está na formatação automática, mas na verificação de estilo. Desculpe se essa resposta também estava fora de tópico. :)
fonte
Isso ajuda muito a uniformizar o código na empresa e, graças a isso, você geralmente produz uma estrutura mais facilmente compreensível e facilmente mais fácil de manter para o seu produto.
fonte
Bem, as vantagens são o mesmo que qualquer formatador de código, como a padronização do código, semântica entre desenvolvedores, etc. As únicas possíveis desvantagens que eu vejo é a falta de um olho humano após a formatação, para adicionar algumas exceções, etc.
Então eu é melhor considerar um formatador IDE em vez de um formatador de horário de check-in.
fonte
Na minha experiência, é uma coisa boa. Sem um, as comparações de código geralmente mostram uma bagunça na formatação de espaço em branco e podem ocultar as alterações reais do código. Na minha experiência, mexer com a formatação de alguém não é o pecado que se faz, especialmente com os benefícios potenciais de consistência em toda a equipe.
fonte