É bom manter os comentários sobre correções no código?


15

Minha equipe está usando casos claros como controle de versão. O projeto em que estou trabalhando não é iniciado 7-8 anos atrás. Durante toda a vida útil do projeto, tivemos vários lançamentos de service packs de correções de bugs, etc. Os problemas são rastreados usando o sistema de rastreamento de bugs e a maioria das pessoas que trabalham nas bugs segue uma rotina de anexar o comentário em START / Bloco END com a data, autor, identificação do bug etc.

Eu sinto que isso é irrelevante e torna o código desorganizado e desconfortável de manter, e essas são as coisas que devem fazer parte dos comentários / etiquetas de check-in etc., onde podemos manter informações adicionais sobre o ciclo de vida do produto de trabalho.

Qual é a melhor prática a ser seguida?

Alguns dos revisores do código insistem em comentar os erros e as correções para facilitar sua vida. No meu entendimento, eles devem revisar os arquivos mapeando-os para uma visualização e obter o log de alterações da filial e revisá-los. Seria útil se eu pudesse obter algumas práticas recomendadas para enviar o código atualizado para revisão.


3
A verdadeira questão é por que eles fazem assim. Este pode ser um procedimento muito antigo antes do controle de origem.

@anderson - Eu sinto que eles não têm um entendimento adequado sobre o uso do clearcase quando foi introduzido. Assim que a prática poderia ter seguido mais ....
sarat

considerado descobrir?


Não direi que é uma prática ruim. De qualquer forma, uma das medidas de qualidade do software é a porcentagem de comentários através do código-fonte.
26411 Rudy

Respostas:


27

O problema de adicionar a correção de bug como um comentário ao código é que você não obtém a história completa. Se eu vir um pedaço de código perfeitamente fino com a tag "esta é uma correção para o bug blah ", minha primeira reação seria dizer "e daí?". O código está lá, funciona. A única coisa que preciso saber para manter o código é um comentário que me diz o que faz.

Uma prática melhor seria adicionar referências de correções de erros nos logs de confirmação do SCM. Dessa forma, você vê qual é o erro, onde foi introduzido e como foi corrigido. Além disso, quando chegar a hora de uma liberação, você pode simplesmente extrair os logs do SCM e adicionar um marcador indicando que houve um erro e que foi corrigido. Se outra ramificação ou versão apresentar o mesmo bug, é fácil localizar a correção e reaplicar se for realmente a mesma coisa.

Tendo dito tudo isso, eu também concordo com a resposta de Charles. Se o motivo de um pedaço de código não for óbvio, informe o mantenedor de que o código está lá por um motivo e deve ser tratado com cuidado.


Excelente resposta. Adicionei mais alguns pontos à minha pergunta. Verifique e atualize sua resposta. obrigado. BTW, você poderia me ajudar com os comandos clearcase para obter logs de confirmação de uma ramificação específica?
26411 sarat

@ Sarath Receio nunca ter usado o ClearCase antes. Sinta-se livre para usar o superusuário para perguntar. Tenho certeza de que muitas pessoas estão dispostas a ajudar.
Dysaster

4
Bons rastreadores de erros como o JIRA podem procurar nos logs de confirmação do seu SCM e obter informações quanto a erros. Apenas pense que você compromete algo para um erro, e o rastreador de erros adiciona automaticamente uma nota ao relatório de erro que confirma o X referente ao erro.

@ Andersen - Obrigado, estamos usando o JIRA. Mas preciso ter certeza de que está usando corretamente ou não.
sarat 26/07

@ Thorbjørn Ah, você ficou fácil. Eu tive que fazer isso manualmente de volta ao dia com o CVS / Bugzilla combo (e mais tarde SVN / Bugzilla). Adicione referência de correção de bug ao meu commit e adicione a referência de commit ao bugzilla. Processo propenso a erros, e os desenvolvedores tendem a esquecer um ou outro. Mas as informações foram muito úteis em várias ocasiões.
Dysaster

23

Principalmente má prática. Não direi que isso nunca deve ser feito. Ocasionalmente, você encontra algo como um bug em uma API externa que precisa ser contornada. A solução alternativa pode parecer completamente com morte cerebral se você não souber sobre o bug subjacente. Nesse caso, pode ser uma boa idéia documentar o bug no código para que os colegas de trabalho ou o seu eu posterior não tentem "consertar" o código obviamente morto do cérebro.


3
Acordado. Adicione esse tipo de comentário quando agregar um valor significativo. Não faça isso apenas para virar uma manivela.
quickly_now

Bom, isso suporta a idéia de comentários dizendo "Por que" algum código está lá. Veja programmers.stackexchange.com/questions/1/…
Gabriel

Eu já fiz isso algumas vezes: código que, à primeira vista, desafia completamente a lógica ("para que serve esse código aqui?"), Mas na verdade existe por uma razão muito boa, para que você queira que as pessoas andem com cuidado isto. Em seguida, adicionar um comentário cauteloso explicando o porquê desse código pode facilitar a vida de todos. Então, se alguém puder pensar em uma maneira melhor de resolver o problema original, todos os créditos a eles, eu digo - eles sabem por que o código do braindead foi implementado e o que ele deve realizar, por isso é muito mais fácil implementar uma alternativa solução.
um CVn

9

Má prática. Os comentários ficarão desatualizados e desorganizarão o código. As informações ainda estão disponíveis no histórico da versão do seu sistema SCC, se necessário.


3

Parece uma má prática. E se a sua organização decidir migrar para outro sistema de rastreamento de bugs? Não amarre seu produto com muita força às ferramentas que você está usando no momento. Em vez de se referir a IDs de bug específicos, e as razões pelas quais o código parece não serem claras, motive sua decisão de design com comentários no código.


Esta é uma falsa dicotomia. Por que você não pode ter comentários de design ("foi por isso que fizemos xy z") quando necessário e mencionar ids de bug nas mensagens de confirmação?
Matthew Flaschen

Onde diz que você não pode? Eu estava me referindo a IDs de bug no código, não às mensagens de confirmação do VCS.
26411 fejd

Desculpe, eu não entendi. Eu pensei que você estava dizendo que não era útil colocar identificações de bug em qualquer lugar.
Matthew Flaschen

Não tem problema, isso significa apenas que minha resposta não foi clara o suficiente. :)
fejd

2

Minha primeira reação seria não se repetir, então retire-o do código e entre nos logs do SCM. Tivemos uma discussão semelhante aqui sobre o comentário de revisão de funções, nomes de autores e datas de criação de arquivos e funções. No passado (antes de o SCM ser usado), todas essas informações eram mantidas nos arquivos para poder reconstruir a evolução de um arquivo.

Cerca de metade dos desenvolvedores deseja que essas informações possam ter todas as informações em um único local (isso as aciona para procurar alterações no SCM). A outra metade dos desenvolvedores não inicia a busca por pistas sobre o que mudou no código, mas a partir do SCM, para que não precisem das informações no código. Ainda temos que decidir o que fazer com esses comentários. Depende muito da maneira como as pessoas estão trabalhando e algumas são muito teimosas em deixar seus métodos conhecidos. A mesma coisa sobre comentar o bloco de código e deixá-los no código para sempre.


Eu acho que o código comentado deve ser verificado pelo SCM e se recusar a ser confirmado ... Está adicionando confusão ao código apenas para obter 5 minutos de pesquisa no histórico do SCM, se algum dia hipotético no futuro você precisar costas.
Julien Roncaglia

Concordamos, mas tente implementar isso no sourceafe: D Em nossa equipe de projeto, trabalhamos com revisões, por enquanto esses bloqueios são recusados ​​pelo revisor.
refro

Oh SourceSafe ... desculpe por você e sua equipe.
Julien Roncaglia

Não seja, é melhor que nada. E, no momento, todo o novo desenvolvimento é feito com o Subversion, então todo mês tenho menos a ver com o sourcesafe.
refro 26/07

1

Apenas para adicionar ao que Dyaster et al. Como dito, embora o JIRA tenha habilidades realmente boas para exibir as alterações associadas às correções, o melhor lugar para documentar uma correção é em um caso de teste. Se o código não estiver claro sem um comentário indicando qual bug foi corrigido, isso é "cheiro de código". Dito isto, se você não tiver tempo para limpar o cheiro, o comentário deve se referir ao caso de teste, onde deve ser muito mais óbvio o motivo pelo qual o código está fazendo o que está fazendo. Se você não tiver tempo para escrever um caso de teste explicando a correção do bug, o bug ainda não foi corrigido, apenas foi adiado.


1

Concordo em adicionar IDs de correção de erros nas mensagens de confirmação, e não dentro do próprio código. Os rastreadores de erros que rastreiam automaticamente as mensagens de confirmação para os IDs de erros são muito úteis.

Além disso, você pode usar o comando culpar / anotar / elogiar do seu sistema de controle de versão para ajudar a substituir esses comentários. Então, quando você executa algo como:

vcs blame file.ext

você pode ver informações úteis, geralmente incluindo quem alterou cada linha, quando a alteraram e o ID de confirmação. No id de confirmação, você pode obter a mensagem completa, que deve incluir o ID do bug.

Os bons sistemas de VCS permitem ignorar o espaço em branco ao calcular quem modificou uma linha.

Não sei o que o Clear Case possui para esse recurso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.