Devo insistir para que realizemos revisões de código antes de voltarmos ao tronco?


10

Nova postagem solicitada do StackOverflow:

Estou trabalhando em um pequeno tempo de desenvolvimento com um tempo muito limitado para o desenvolvimento. Desenvolvemos uma ferramenta importante para o resultado do nosso trabalho, mas que não é usada diariamente. Sou a única pessoa na equipe que tem experiência como programadora.

Meu problema é que tenho pressionado por revisões de código antes de voltar ao tronco por mais de um ano. Todos concordaram com isso, mas ainda é apenas o meu código que foi revisado. Retornando de longas férias, volto a um tronco com comentários de código como "esta é uma solução feia - remova o mais rápido possível" e "solução rápida". O que também é novo é que um sujeito foi designado como responsável pela ferramenta. (Uma função que me foi oferecida pela primeira vez, mas que eu me recusei devido a um motivo não relacionado ao trabalho.) E ele acha que essa é uma boa maneira de trabalhar: como temos um tempo limitado para desenvolver, devemos cortar custos assim.

Minha preocupação é que os outros desenvolvedores escrevam códigos feios: frequentemente quebrando o encapsulamento, escrevendo classes enormes, adicionando classes internas em lugares estranhos, tendo poucos ou nenhum teste de unidade e assim por diante. Eventualmente, será impossível desenvolver ainda mais a ferramenta.

Devo insistir para que realizemos revisões de código antes de voltarmos ao tronco ou sou apenas uma cadela de qualidade de código?


3
"Como temos um tempo limitado para nos desenvolver, devemos cortar custos assim". -> "Você pode me pagar agora ou depois." Venho reclamando de revisões de código e testes de unidade há dois anos e meio e sempre tenho a mesma resposta. É claro que agora que temos milhares de linhas de código, todo o "corte de esquina" está voltando para nos assombrar.
MetalMikester

Situação vai melhorar à medida que o cara se torna mais experiente.
rwong

Respostas:


2

Eu já estive em situações semelhantes antes e imho depende de "eu tenho que manter o código".

Se eu tenho que manter o código, do que quero um código de alta qualidade, pessoalmente não exijo revisões de código para cada confirmação (ou seja, os programadores podem decidir por si próprios se um determinado código precisa de uma revisão ou não), mas se a legibilidade / manutenção sofrer pode estar em ordem.

Ao ler isso:

Minha preocupação é que os outros desenvolvedores escrevam códigos feios: frequentemente quebrando o encapsulamento, escrevendo classes enormes, adicionando classes internas em lugares estranhos, tendo poucos ou nenhum teste de unidade e assim por diante. Eventualmente, será impossível desenvolver ainda mais a ferramenta.

Eu acho que seu problema é maior do que apenas revisões de código. Parece que faltam algumas diretrizes e / ou elas não foram implementadas. Não ter / poucos testes de unidade pode ser uma má ideia, mas depende do caso específico. No entanto, breaking encapsulation, writing huge classes, ...crie um código propenso a erros, que definitivamente deve ser corrigido.


6

Penso que é uma boa ideia revisar o código e manter algumas diretrizes de codificação, mas acho que fazê-lo para cada check-in é uma perda de tempo. É uma boa idéia ao estabelecer uma equipe e com jovens programadores, mas programadores experientes podem pensar por si mesmos e, eventualmente, você terá que confiar neles. Dito isto - você pode fazer as revisões periódicas de código para atualizar as coisas, mas observar cada linha de código que entra no seu VCS está realmente exagerando.

E alguns pequenos comentários sobre as correções do seu colega - algumas vezes, fazer uma correção feia é a solução correta . Pode ser que esse código específico não seja importante o suficiente para investir muito tempo, pode ser que a solução simples seja boa o suficiente e seja melhor investir tempo em outras coisas. Tornar seu código "bonito" não é seu principal objetivo como programador. Seu principal objetivo é entregar e obcecar em cada linha de código simplesmente não o levará até lá.

O que estou tentando dizer é: você precisa escolher suas batalhas. Não há problema em perder a batalha por uma classe de utilidade insignificante para vencer a guerra de entrega (ou essa guerra de subsistema MUITO IMPORTANTE, por falar nisso).


3

Se o programa em questão não for um protótipo descartável único, acho que as revisões de código devem ser obrigatórias para cada check-in.

Os desenvolvedores seniores podem ter o privilégio de fazer check-ins não revisados, uma vez que tenham consciência suficiente para solicitar uma revisão quando apropriado.


1

Não tenho certeza se a revisão do código é a resposta até que alguém comece a impor melhores padrões de codificação. Alguém escreve código ruim, comenta / admite e faz check-in de qualquer maneira. Qual a utilidade de uma revisão se alguém quiser rejeitar o código, mas isso o atrasará?

Você precisará: definir padrões, supervisionar os principais culpados mais de perto e entender que um bom código nem sempre leva mais tempo para escrever. Eles precisam parar de usar as linhas do tempo como desculpa para se recusarem a mudar os maus hábitos.

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.