É bom rever programas com idosos e chefes, mesmo que esteja funcionando bem?


18

Na minha empresa, antes da entrega de qualquer projeto, meu chefe pede aos meus idosos que revisem os programas escritos por mim ou por outros membros da equipe ou, às vezes, o chefe também se senta conosco para revisão.

Eu acho que é uma boa maneira de obter conhecimento, mas às vezes, quando os programas estão funcionando bem, eles não funcionam da mesma maneira após a revisão e eu preciso examinar novamente o meu programa.

Eles afirmam que a revisão ajuda a otimizar a execução de programas e consultas, mas podemos preferir a otimização do que o funcionamento real do programa?


6
como você pode ter certeza se ele está funcionando bem sem revisão por alguém que não sabe as idiossincrasias que você está acostumado ao fazer seus próprios testes
catraca aberração

porque eles revisam o código após o teste completo do módulo pela equipe de teste.
Himanshu

15
@Himanshu: A revisão após o teste é definitivamente tarde demais . Revisões devem ser feitas no trabalho em andamento.
Jan Hudec

3
Adote essa prática. Eu gostaria desesperadamente que estivéssemos fazendo isso nas minhas equipes. Ajuda a eliminar silos de conhecimento (um grande problema para nós) e garante que seus colegas de equipe possam trabalhar com seu código. Se seus comentários significam que seu código é reescrito algumas vezes, isso é bom. Até grandes programadores escrevem código incorreto às vezes; alguns de nós gostariam de mais tempo para voltar e limpá-lo. Essa deve ser uma chance de ter uma ótima experiência de aprendizado com pessoas mais experientes que você. Não aceite isso como pessoas atacando seu código; tome como pessoas tentando ajudar você a se tornar um programador mais experiente.
precisa

1
Se é comum que o código que está "funcionando bem" seja fragmentado durante a revisão do código, na medida em que os membros da equipe sentem que está perdendo muito impulso, talvez você deva considerar a programação de pares, para que o código seja revisado enquanto está sendo escrito.
Buhb

Respostas:


38

"Trabalhar bem" é realmente uma ótima métrica, mas se você é o único na equipe capaz de decifrar o que você escreveu e, portanto, mantê-lo, o código é quase inútil para a empresa a médio ou longo prazo.

Um bom código é pelo menos:

  • trabalhando como pretendido
  • legível por humanos / claro
  • de fácil manutenção
  • facilmente extensível para mudanças futuras
  • seguro
  • sem dependências desnecessárias
  • lidar corretamente com casos não nominais
  • etc

(Alguns desses requisitos são realmente sobrepostos, mas é bom considerar individualmente ...)

As revisões de código servem ao propósito além da parte "funcional", que pode ser feita através de testes automáticos.

Eu, pessoalmente, sei que é chato ter algo funcionando sendo destruído e ter que reconstruí-lo do zero. Mas, muitas vezes, isso ocorre devido a uma falta de comunicação do líder sênior / técnico. Portanto, se você acha que precisa reescrever com muita frequência, da próxima vez, vá ao revisor antes de escrever uma única linha e tente obter o máximo de informações possível sobre o que ele espera, com todos os detalhes. Também pode ser ótimo se a equipe de revisores de código resumir suas expectativas em um documento formal ao qual todo desenvolvedor possa se referir.

Por um lado mais positivo, uma sessão também pode ser uma ocasião para compartilhar grandes práticas / projetos.


1
Eu acrescentaria que testar o código não implica que não haja erros, limite casos em que o software trava por exemplo.
dyesdyes

3
Eu concordo, e os testes automáticos também devem ser revisados ​​por código, para garantir que eles estejam testando a coisa certa ... Tartarugas até o fim.
Xavier T.

12

Interpretei sua pergunta como "Meu código de funcionamento pode ser massacrado em uma revisão a um ponto em que ele nem compila mais?" .

Sim pode. Geralmente, durante uma revisão, você analisa como seu código faz o que faz. Quando você deseja entregar seu código, diz que concluiu uma determinada parte do programa.

Você diz que funciona. O teste é feito para verificar isso. Um módulo que passa nos testes não significa que o módulo não deve ser tocado novamente.

Um módulo que parece funcional ainda pode ser um desastre esperando para acontecer, em tempo de execução ou em alguns meses quando você ou outra pessoa precisar executar manutenção nele. Ao alterar seu código em uma revisão e apontar o que havia de errado com ele, seu revisor (espero) está tentando realmente ensinar alguma coisa.


3

As revisões por pares são, sem dúvida, uma ótima maneira de aprender. Alguém pode ver algo diferente, tem uma experiência diferente para você e deve poder contribuir com melhorias. Isso não deve ser depreciativo, espero que qualquer desenvolvedor seja capaz de comentar e criticar construtivamente o código de qualquer pessoa!

Parece-me que algumas dessas "melhorias" estão realmente fazendo alterações, porque (como você esperaria) o desenvolvedor revisador tem menos experiência com o software do que o autor.

Essa tendência é o auto-feedback, talvez seu código seja difícil de seguir ou manter? Seus comentários são valiosos? Absolutamente! Eu vejo como isso pode ser frustrante: ter um código de trabalho que seus colegas pareçam quebrar, você não deve ficar desanimado - você deve proteger seu código contra essas alterações.

A questão passa a ser como proteger a funcionalidade dos seus programas para que você saiba que a funcionalidade ainda está funcionando depois de concluir suas revisões. Minha sugestão seria garantir que você tenha uma cobertura decente de testes unitários. Dessa forma, sempre que você / seu revisor / sucessor alterar o código, eles poderão ter certeza de que as alterações feitas são seguras.

ETA: Acabei de ver um de seus comentários, tenho certeza que isso é desnecessário, mas as revisões de código devem ser feitas antes que a equipe de teste coloque as mãos nele. Caso contrário, eles não estão testando o produto final.


1
Os testes de integração também são extremamente úteis para detectar quebras.
Jpmc26
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.