Já trabalhei em duas empresas, cada uma com uma metodologia diferente quando se tratava de análises de código:
Na primeira empresa, uma revisão de código foi conduzida pelos líderes da equipe e foi necessária após a conclusão de cada módulo.
No entanto, na segunda empresa, os líderes de equipe não eram obrigados a realizar nenhuma revisão de código e apenas checavam os problemas de funcionalidade e design.
Então, eu estou confuso. O processo de revisão de código é realmente necessário? Se for, por que? E se não for, por que não?
code-reviews
junior-programmer
usuário8
fonte
fonte
Respostas:
Pessoalmente, acho que todo código deve passar por uma revisão de código, não importa se você é desenvolvedor júnior ou sênior.
Por quê? Para iniciantes, seu título não indica nada sobre como você se desenvolve, e um desenvolvedor sênior pode aprender algo com o júnior. Em nossa empresa, mudamos de posição para que um dos outros membros da equipe revise seu código ... na maioria das vezes, somos "juniores" e seniores, para que todas as coisas que não são ditas diariamente possam ser pego em um acompanhamento. Se o sénior não gostar do código do júnior, ele deve ouvir por que o júnior fez o que ele fez e olhar para ele e ver se essa é uma solução viável que pode ser usada no futuro ... é uma questão de ficar mais sábio, não importa quem é você.
Uma coisa importante sobre a revisão de código não é ser muito legal; se você é um cara legal, permite que códigos cada vez mais confusos evoluam no sistema. Assim como ontem, comecei a refazer um aplicativo completo que um ex-desenvolvedor juniordevel escreveu, e meu deus esse código poderia precisar de uma revisão antes de ele sair.
Não vejo por que deveria ser o líder da equipe apenas revisando, mas requer uma pessoa que não tenha medo de escolher uma "briga" por um pedaço de código mal desenvolvido, e deve ser uma pessoa que se preocupa com a forma como o código deve estar. Nem todas as empresas contratam pessoas que realmente se importam com o que fazem, e esses ovos ruins não devem ter permissão para fazer revisões de código, pois é provável que apenas encolhem os ombros e digam "OK" ao código incorreto.
fonte
Basicamente, a revisão de código é necessária para todos os programadores, independentemente da experiência. É o controle de qualidade do desenvolvimento de software, e um dos motivos pelos quais o código aberto pode ser de altíssima qualidade.
EDIT: O motivo é que hoje um revisor de código tem exatamente a mesma função que um mantenedor posteriormente. Se o código não fizer sentido para ele hoje, também não fará sentido mais tarde, tornando os bugs mais caros de corrigir. Portanto, torne-o compreensível hoje, enquanto o desenvolvedor ainda se lembra do código. Além disso, o revisor pode ver bugs ou omissões que o desenvolvedor perdeu.
Infelizmente, muito poucos querem fazê-lo, mas, do ponto de vista comercial, deve ser obrigatório.
fonte
Eu trabalho em um lugar onde a revisão de código é agora um requisito, mas não era tão pouco quanto 3 anos atrás. Ele fez uma grande melhoria em nosso código e na capacidade de outros manterem o código posteriormente. Até desenvolvedores seniores e muito experientes cometem erros que podem ser corrigidos de maneira fácil e silenciosa na revisão de código antes que o controle de qualidade os encontre ou pior antes que o cliente os encontre. Além disso, pelo menos uma pessoa que não seja o desenvolvedor original conhece o código.
Freqüentemente, quando uma organização tenta algo novo, como fizemos com a revisão de código, há muita resistência à mudança. Não vi quase nada disso (estávamos estatísticos também para obter um departamento formal de controle de qualidade.) Com a revisão de código. É preciso apenas uma ou duas revisões para ver o valor.
Encontrei novas técnicas que não havia considerado tanto na revisão do código do trabalho de outra pessoa quanto na revisão do meu código. Encontramos problemas de competência com novas contratações de forma relativamente rápida, com análises de código e, mais importante, com a forma como elas responderam à revisão de código. Aprendemos o que parece perfeitamente claro no momento da programação dessa seção que não ficará clara na manutenção. Isso é inestimável. Pode ser que a única coisa necessária seja um comentário sobre o motivo pelo qual algo foi feito. Descobrimos alguns mal-entendidos fundamentais sobre o design do banco de dados que precisavam ser corrigidos para que um relatório realmente tivesse as informações corretas.
Frequentemente, o que eu vi em uma revisão de código é que, pelo próprio ato de explicar algo para outra pessoa, o desenvolvedor terá uma lâmpada acesa na cabeça e percebe que há um bug que o revisor não viu.
E o boy pode codificar a revisão para identificar aqueles programadores de cowboys que não seguirão nenhum padrão ou usarão ferramentas obrigatórias e cujo código será praticamente impossível de manter por qualquer outra pessoa. E isso pode forçá-los a seguir com o programa ou sair também.
As pessoas mais resistentes à revisão de código são geralmente as pessoas das quais a organização mais precisa se livrar, porque elas sabem em seus corações que seu código não pode passar por uma revisão de código.
fonte
O cara ágil diria: "Você não precisa de uma revisão de código, basta emparelhar a programação e escrever bons testes" :)
fonte
A revisão de código é uma boa maneira de disseminar conhecimento e boas práticas por meio de uma equipe. Na minha experiência, é uma boa idéia garantir que todo o código seja revisado e tentar variar quem revisa qual código.
Na minha equipe atual, o código de todos é revisado igualmente, e tanto o programador quanto o revisor devem estar satisfeitos com o código antes que ele possa ser liberado. Isso se aplica tanto aos desenvolvedores seniores que estão sendo revisados por mais desenvolvedores juniores, um desenvolvedor júnior que revisa outro ou outros desenvolvedores seniores que se revêem. Se o revisor é inexperiente ou não se sente à vontade para revisar qualquer parte específica do código, ele se unirá a outro desenvolvedor (e talvez também o desenvolvedor original) para fazer a revisão como um grupo.
fonte
Estou no ramo há mais de 20 anos, trabalhando para empresas de software e para diferentes negócios e nenhum desses locais teve um processo de revisão de código. No entanto, posso entender e apreciar os benefícios de ter um. Essencialmente, como eu os entendo, eles devem ser usados para garantir a aderência aos padrões, que devem ser seguidos para que outros possam manter o código com mais facilidade no futuro. A legibilidade do código também pode ser verificada em um processo de revisão, pois isso também garantirá que a manutenção possa trabalhar efetivamente com o código.
Atualmente, trabalho em uma pequena loja onde sou o desenvolvedor único. Ocasionalmente, contratamos prestadores de serviços para ajudar com o backlog. Pelo menos um ou dois desses empreiteiros escreveram código que não necessariamente atendia aos meus ou aos padrões das empresas, mas funcionou bem e foi pelo menos um pouco compreensível. Quando apontei esse assunto para a gerência, eles não se importaram, eles só queriam saber se fazia o que nós pagávamos. Então, acho que depende apenas da empresa e, se é limpo ou não, o código de fácil manutenção é o produto desejado ou se eles querem apenas algo que funcione bem com o dinheiro.
Obviamente, como desenvolvedor, e alguém que precisa manter o código, eu gostaria de trabalhar com um código limpo que siga algum tipo de padrão, mas nem sempre tenho esse luxo, então faço o melhor possível e lido com o que tenho. , mesmo que isso signifique às vezes ter que reescrever algum código em meu próprio padrão.
fonte
As revisões de código podem identificar defeitos no início do ciclo de vida do software, quando os problemas são mais fáceis (e mais baratos) de corrigir. No SmartBear , desenvolvemos uma ferramenta de revisão de código por pares e também fizemos muitas pesquisas sobre como tornar as revisões de código eficazes. Com base nos dados de nossos clientes, os defeitos encontrados na revisão de código são 8 a 12 vezes mais baratos para localizar e corrigir do que os defeitos encontrados no controle de qualidade. Somente a economia de custos faz a revisão do código valer a pena, mas há mais valor do que apenas isso. A revisão de código é uma excelente maneira de todos na equipe aprenderem e melhorarem como desenvolvedores de software.
Existem algumas armadilhas que podem fazer com que as revisões de código se tornem menos eficazes e parece que sua organização está presa em uma delas. Faça a revisão do código sobre o código, não as pessoas. Os títulos não significam nada em uma revisão de código. Os apelos à autoridade (você deve fazer do meu jeito, porque eu sou o líder da equipe) fazem mais mal do que bem. Ensine em seu lugar. Os engenheiros seniores devem explicar por que isso deve ser feito do seu jeito, não apenas exigindo que seja. Se você está tendo dificuldades para explicar um conceito, também é uma experiência de aprendizado para você. Vocês dois serão melhores desenvolvedores pelo esforço que fazem.
fonte
Eu acho que o código que revisa TODOS OS CÓDIGOS é um exagero. A quantidade de tempo que leva para revisar todo o código pode ser melhor gasta em outro lugar. Alternativamente, acho que código crítico e / ou partes particularmente complexas precisam de revisão de código, mas certamente nem todas as linhas de código.
fonte
Na minha opinião, o código que será usado por uma empresa, seja ele escrito por um desenvolvedor Júnior ou Sênior, sempre deve ser revisado. Por quê? Porque e se o código tivesse vários erros? E se, durante o tempo em que esse código estava sendo usado, o programa travasse? Para impedir que essas coisas aconteçam, todo o código deve ser revisado antes do uso.
Mas e as empresas que não revisam o código? Provavelmente são as empresas que têm muitos problemas de tecnologia e muitos, como dizem aos consumidores, "travamentos" ;-).
Então deixe-me responder todas as suas perguntas:
fonte
Revisão de código : O processo de revisão de código deve ser vital para todos, explicarei quem recebe todos os benefícios devido à realização da revisão de código e quais são os benefícios que estão recebendo.
1. Benefícios Obtidos pela Empresa Devido à Realização da Revisão do Código: Se a revisão frequente do código for realizada, a empresa poderá obter os produtos finais de uma maneira muito melhor otimizada, que os ajudará a obter o nome da marca em seu mercado e também a ajudar a obter ou melhorar seu nível atual de CMMI .
2. Benefícios para o líder da equipe devido à condução da revisão do código: Como todos sabemos, um professor pode identificar facilmente os erros, porque está revisando as respostas de seus alunos com mais frequência, para ter uma idéia de quais áreas existem. possível para coisas erradas. Da mesma forma, o líder da equipe também sabe quais são as coisas que dão errado nessas áreas. Como podemos corrigi-los e também ajudar o líder da equipe a pegar as idéias de notícias do desenvolvedor júnior também.
3. Benefícios para o desenvolvedor junior Devido à realização da revisão de código: o desenvolvedor junior pode facilmente captar as idéias sobre o processo de revisão de código e também é capaz de obter qual é o padrão de codificação. Por exemplo: para criar API de maneira adequada, eles aprenderão a padronização da codificação que pode ajudá-los no futuro, especialmente quando eles se tornarem no cargo de nível superior.
Portanto, minha conclusão é que a revisão de código é um processo muito muito vital para todos, mesmo para os membros da equipe, pois a revisão de código nos ajuda a corrigir nossos erros descuidados em nosso código, porque somos todos seres humanos, por isso não podemos prever que nunca cometer erros descuidados no código.
fonte
Qual é a diferença de interferir com suas idéias antes de verificar seu código (revisão) ou depois devido a um bug, ficando muito inteligente / difícil de entender ou não seguir as práticas padrão aceitas? Esse é o seu ego?
Você não pode desconsiderar os méritos da revisão de código ou qualquer outra coisa apenas porque ela está sendo implementada de maneira inadequada por um membro da equipe menos qualificado que você não respeita. A Revisão de Código não é um processo altamente complexo que apenas alguns super programadores são capazes de entender. Não tenho certeza de que existem muitos programadores ou escritores profissionais que são capazes ou têm tempo para editar automaticamente.
Você já retornou a uma linha de código alguns meses depois e se perguntou o que eu estava pensando? Haveria uma melhor chance de capturá-lo com uma revisão de código. Você acabou de entender e é apenas um pouco melhor do que o programador que você era há algum tempo atrás - espero.
fonte
Na OMI, uma revisão de código deve ser essencial para todos os desenvolvedores, mas somente quando as pessoas que fazem a revisão são competentes. No passado, tive o código rejeitado em uma revisão porque, segui-o
SOLID
, fiz algumas Injeção de Dependências e o código foi organizado em namespaces e pastas de acordo com o design lógico, e incluiu um pequeno conjunto de testes de unidade para verifique o código. O código foi rejeitado como "muito complicado" e me disseram para usar uma classe que misturasse tudo e remover os testes, porque não era assim que a empresa escrevia o código.Uma revisão de código como essa é inútil, mas uma revisão de código com uma equipe competente pode frequentemente esclarecer algo sobre o design (por exemplo, por que você deve fazer X e Y, mas não Z) ou indicar uma falha real (por exemplo, fazer X fará com que Y falhe por razões incorretas).
fonte
É claro que a Revisão de Código não é necessária . Por outro lado, nem testes, integração contínua, controle de origem, envolvimento do cliente, criação de perfil, análise estática, hardware decente, compilações com um clique, rastreamento de bugs, a lista continua.
Juntamente com as Revisões de código, as coisas mencionadas acima são ferramentas que ajudam a garantir a qualidade do software. Com uma combinação de habilidade, sorte, tempo e determinação; você pode fornecer software de qualidade sem nenhum desses itens, mas é mais provável que não o faça .
No seu cenário, não há nada para se confundir. Nem toda organização se entrega às melhores práticas. Eles podem discordar, pode entrar em conflito com uma prática recomendada diferente que implementam ou podem considerar que a sobrecarga de implementá-la é muito grande para eles neste momento. Dependendo das circunstâncias, eles podem estar corretos ao fazê-lo ou podem estar fazendo uma economia falsa. Para algumas ferramentas (por exemplo, controle de fonte), a relação retorno / esforço é tão boa que usá-la não é fácil; para outros, é menos claro.
Não há dúvida de que a revisão de código é uma prática que introduz uma sobrecarga significativa. Por esse motivo, as organizações procurarão minimizar essa sobrecarga, não fazendo nada, ou apenas fazendo em determinadas situações (por exemplo, para um membro júnior da equipe ou uma mudança particularmente complicada). Nem sempre é óbvio que ele paga mais (pegando bugs, reduzindo dívidas técnicas ou compartilhando conhecimento) do que custa. A maior parte desse retorno é difícil de quantificar, enquanto é muito fácil contar o número de horas de trabalho que sua organização gasta fazendo revisões. O bit mais fácil de quantificar (contagem reduzida de bugs) é fácil de atribuir a outros fatores (por exemplo, "é claro que possui menos bugs, é mais maduro").
fonte
Fazemos jogo de futebol online na Turquia. Muitos usuários e mestres de jogos nos ajudam na funcionalidade. Também eles comentam os recursos necessários. Então eu acho que, se você tem muitos usuários, testes de funcionalidade podem ser feitos para ajudar ou obter emblemas. A colaboração de desenvolvedores, mestres de jogos e usuários com fóruns, equipes de suporte e ambientes de teste privados cria um projeto social.
É necessário revisar com certeza o código e compartilhar experiências entre a equipe de desenvolvimento, mas se não for crítico, você não precisará se forçar.
fonte
Eu acho que a inspeção detalhada de terceiros depende do seu ciclo de vida, seja você mais ágil ou mais cascata em seus processos. Acho razoável fazer projetos / inspeções de alto nível, bem como inspeções de projeto em nível de detalhe. Eu acho que também é bom envolver vários membros de uma equipe para inspecionar.
fonte
Eles são absolutamente necessários, pois têm pouca experiência.
fonte