Revisão de código: descubra o que você precisa saber sobre o assunto

1/1/2020 - DesenvolvimentoSoftware

Desenvolver um software é uma tarefa que envolve vários processos e diversos profissionais da área. Algumas das etapas envolvidas são:

  • Levantamento de requisitos
  • Análise de Requisitos 
  • Projeto
  • Implementação
  • Testes
  • Implantação

Há uma outra etapa fundamental nesse processo e que nem sempre é usada ou lembrada. Essa etapa é a de revisão de código. Também conhecida como code review

O software é escrito por seres humanos e, como sabemos, ninguém é perfeito, nós somos passíveis de erros. Sabendo disso, é possível relacionar que um software costuma ter vários erros que precisam ser corrigidos antes da implantação, por isso, fazer sua revisão é indispensável. 

O que é revisão de código?

É o processo em que outra pessoa ou pessoas de uma equipe revisam o código desenvolvido, identificando possíveis problemas/bugs, oferecendo feedbacks para melhorar a sua qualidade antes de integrá-lo à base.

Karl Wiegers diz, em Humanizing Peer Reviews, que: 

“A revisão por pares – uma atividade na qual outras pessoas, além do autor de uma entrega de software, o examinam em busca de defeitos e oportunidades de melhoria – é uma das ferramentas mais poderosas de qualidade de software disponíveis. Os métodos de revisão por pares incluem inspeções, orientações, verificações de mesa por colegas e outras atividades semelhantes. Depois de experimentar os benefícios das revisões por pares por quase quinze anos, nunca trabalharia em uma equipe que não as realizasse.”

Só por essa citação já dá para perceber a importância da revisão de código. E para não deixar dúvidas, eu trouxe algumas das vantagens já reveladas pelo uso do code review.

Importância e vantagens

  • Incentivo ao trabalho em equipe

Uma das vantagens do uso da revisão é o incentivo ao trabalho em equipe e o senso de colaboração.

No processo de desenvolvimento, apesar da propriedade do código ser entendida como da empresa, pode acontecer da pessoa que o desenvolve possuir o sentimento de que ela é a única responsável pelo código e de que ela é sua proprietária, gerando sobrecarga em seu trabalho. E ainda vale ressaltar que, por vezes, ela é a única que sabe como é o seu funcionamento. 

Quando um código é analisado por outras pessoas e há um olhar sobre o trabalho do outro, o conhecimento acerca do que foi desenvolvido é descentralizado, distribuindo o sentimento de responsabilidade, tornando-o propriedade não só de uma pessoa, mas da equipe envolvida.

  • Conhecimento compartilhado

A revisão também é muito útil para o aprendizado das pessoas que compõem a equipe. Ao fazer uma análise é possível identificar erros e possíveis melhorias no trabalho, que com uma orientação adequada permite que a pessoa desenvolvedora tenha um aprendizado acelerado sobre o assunto.

Se for uma troca entre profissionais mais experientes e menos experientes essa relação se torna ainda mais engrandecedora, pois é possível ver o modo do trabalho do outro, diferentes pontos de vista e afins que contribuem para a experiência de ambos.

Além do mais, ao compartilhar a ajuda, o conhecimento é nivelado e contribui para a qualidade da equipe como um todo. 

  • Economia e qualidade

As revisões feitas de maneira adequada, correta e eficiente promovem economia de tempo e dinheiro.

Isso porque possíveis falhas, erros de digitação e melhorias são identificados antes da implantação do código, evitando defeitos no software e impacto negativo no ambiente de produção, poupando tempo e dinheiro de fazer uma implementação que, posteriormente, terá necessidade de ser alterada.

A revisão agiliza o processo de desenvolvimento e reduz o trabalho realizado pelas equipes de Garantia de Qualidade.

Como dizem por aí, tempo é dinheiro e ninguém quer perder dinheiro, certo?

Em seu livro Code Complete, Steve McConnell aponta que o teste de software sozinho tem eficácia limitada – a taxa média de detecção de defeitos é de 25% para testes de unidade, 35% para testes de funções e 45% para testes de integração. Enquanto que a eficácia média das inspeções de projeto e código é de 55% e 60%

Confira alguns dados que comprovam a eficácia do code review:

  • Um estudo de uma organização da AT&T com mais de 200 pessoas relatou um aumento de 14% na produtividade e uma diminuição de 90% nos defeitos após terem introduzido as revisões.
  • A Jet Propulsion Laboratories estima que economiza cerca de US$ 25.000 por inspeção, apenas encontrando e corrigindo defeitos em um estágio inicial.

Todas essas vantagens revelam a importância da revisão e mostram como sua aplicação é capaz de garantir maior qualidade de um software.

Revisão automatizada, manual ou mista

  • Automatizada

A revisão automatizada, como o próprio nome sugere, é realizada de forma automática por meio do uso de uma ferramenta.

Ela é capaz de detectar:

  • Uso incorreto da linguagem e inconsistências do código
  • Checar o uso de boas práticas ou padrões
  • Complexidade desnecessária
  • Falhas de estruturação, ou se o código é um bom candidato à refatoração
  • Identificar operações ilegais ou inseguras, ponteiros nulos, loops infinitos, código redundante ou inútil
  • Fornece uma maneira relativamente rápida e confiável de encontrar erros comuns de segurança, etc.

Essas análises garantem mais agilidade, economizando no tempo dedicado ao processo.

Por mais que essas ferramentas revisem para você, sejam mais rápidas, eficientes e fáceis de usar, elas possuem seus pontos negativos

Ela é limitada em relação a capacidade humana, por isso pode acontecer dela ler partes de um código e não conseguir revisá-lo adequadamente.

As ferramentas também não têm acesso ao ambiente e o contexto em que o código foi desenvolvido, como acesso a dados e permissões do sistema. Elas apenas olham o código pronto.

  • Manual

A revisão manual é realizada por uma pessoa desenvolvedora. Essa maneira permite uma análise diferenciada da automática.

Ela pode identificar:

  • Se o código está correto
  • Se está executando a ação esperada
  • Se a semântica do software está correta
  • Se a lógica do artefato está conforme os requisitos
  • Se há violações de padrões ou falhas de projeto, etc. 

Além dessas funções, a manual possui algumas vantagens em relação a automatizada. Por ser realizada por uma pessoa, ela permite maior interação entre a equipe; o contexto em que o código foi desenvolvido é conhecido pelo revisor ou revisora, assim como o ambiente de desenvolvimento; ela também entende quem são os usuários e o objetivo do código.

Apesar dos pontos positivos apresentados e da constante discussão de qual revisão é a mais eficiente – se automatizada ou manual – há análises que indicam o uso de ambas, para que suas funcionalidades se complementem, ou seja, a melhor maneira de realizar um code review seria por meio da revisão mista.

  • Mista

É importante entender que não é indicado falar de substituição, mas sim em conciliação, ou seja, equilibrar o uso da revisão automatizada com a manual.

A sugestão é: primeiro faça a revisão automatizada e depois a manual.

Fazendo assim os(as) revisores(as) são capazes de aplicar seus conhecimentos nos feedbacks da ferramenta, percebendo quais são relevantes para então repassar aos(às) desenvolvedores(as). 

Essa ação impede que descobertas indesejadas sejam levadas para frente evitando os problemas já citados, como a perda de tempo. 

A revisão mista garante feedbacks mais assertivos, por isso, é a forma escolhida na nata.house. Além das razões apresentadas, identificamos que seu uso colabora para o desenvolvimento da equipe, já que tem a ajuda e apoio de uma ferramenta.

5 boas práticas de revisão de código

Agora, vou listar algumas boas práticas para os revisores, vamos lá!
A pessoa revisora não pode ser a mesma que criou o código

Sabe quando a gente cria algo e se apega naquilo? Isso é bastante comum e pode impedir um olhar crítico e mais apurado do trabalho realizado, por isso, quem for revisar o código não pode ser a mesma que a criou, nem pode ter se envolvido no processo em nenhum momento. 

Além do apego, outro fator que pode atrapalhar a revisão é que nós acostumamos com nossa criação, abrindo espaço para falhas passarem despercebidas aos nossos olhos. 

Também temos um jeito próprio de trabalhar, e ao ter uma análise com outro ponto de vista é possível encontrar melhores formas de realizar uma mesma tarefa.

2. Registre a revisão e o feedback por meio de uma ferramenta 

Deixar registrado uma revisão e o feedback é uma ação simples, mas que pode facilitar muito a vida da pessoa desenvolvedora. 

Por meio do uso de uma ferramenta é possível acompanhar a evolução do código, quais foram as análises obtidas, onde houve alteração, etc. Você também pode relembrar como ele iniciou ou até mesmo resgatar uma ação.

Uma sugestão de ferramenta é a Collaborator, da SmartBear. Você pode conhecê-la melhor clicando aqui.

3. Tenha uma comunicação direta entre pessoas

É importante ressaltar que o processo de revisão não pode ser restrito a ferramenta escolhida. Registrar toda a ação é um passo fundamental, mas é igualmente essencial que a comunicação direta entre pessoas aconteça, seja pessoalmente, por telefone, vídeo chamada, etc. 

Uma das vantagens da revisão de código é contribuir para a comunicação entre os membros de uma equipe, então usufrua desse benefício, basta conciliar o uso da ferramenta com a comunicação entre pessoas.

4. Identifique padrões dentro das revisões 

Identificar padrões é uma ação que te ajuda a superar erros comuns e que se repetem com frequência. Fique de olho neles para orientar os desenvolvedores para realizar um trabalho mais eficiente e ágil.

5. Revisões de código não possuem hierarquia

Independente da experiência do(da) profissional de uma equipe, seu código também precisa ser revisado. Como já falei, somos pessoas passíveis de erros, e pode até ser que o código de alguém experiente seja impecável ou quase perfeito, mas não custa revisá-lo. Principalmente depois da importância já dita aqui.

3 dicas para fazer uma boa revisão de código

Segue algumas dicas para fazer uma revisão de qualidade:

  1. Faça a revisão com tempo e calma

É importante que o code review seja feito com prazo suficiente para que a revisão não seja comprometida pela pressa. Um prazo adequado possibilita maior atenção aos detalhes e, consequentemente, mais qualidade. 

2. Informe ao revisor o contexto do seu código

Já havia comentado que uma das desvantagens das ferramentas é a falta de conhecimento acerca do objetivo do código e afins. E isso pode acontecer com um revisor caso ele não seja informado sobre do que se trata o código a ser analisado. 

Por isso, diga o porquê ele foi desenvolvido, se para solucionar um problema, criar uma nova função, etc. 

Se você for o revisor, não deixe de tirar suas dúvidas. É importante que a análise não seja feita com base em “achismos”.

3.  Não negligencie o feedback

Se uma revisão foi solicitada é preciso estar disposto a ouvi-la.

Não pense que as observações recebidas são de cunho pessoal. Lembre-se que o code review é visando o desenvolvimento de um trabalho em equipe de qualidade.

Sinta-se à vontade para tirar dúvidas sobre o retorno, de perguntar como poderia ser melhor, quais as sugestões e faça os ajustes necessários.

Ainda sobre o feedback, se for você a fornecê-lo, adote um tom sugestivo e positivo. O objetivo desse processo não é gerar conflitos.

Indicações

Para finalizar nossa conversa, segue algumas indicações para que seus conhecimentos sobre o assunto não acabem por aqui.

  • Livro Peer Reviews in Software: A Practical Guide

Começar as indicações com esse livro é essencial, já que se trata de uma grande referência na área. Você pode adquiri-lo neste link. 

  • Livros gratuitos

Ainda falando sobre livros, confira essas indicações realizadas nesse site. São dois livros GRATUITOS sobre a revisão de código. Aproveite!

  • Dicas sobre a linguagem JavaScript

Aqui na nata.house nós usamos a linguagem JavaScript, por isso, segue 5 dicas para desenvolver um código mais limpo nessa linguagem, escrito por um Desenvolvedor Web e Mobile.

  • Checklist 

Uma das maneiras mais rápidas e eficientes de fazer um code review é utilizando uma checklist para se orientar.  Confira um exemplo nesse link. 

É bom dizer que, inclusive, há checklists de linguagens específicas. 

Conte com uma empresa comprometida com a entrega de seu software, afinal, o produto pode até ser entregue sem a revisão de código, mas vimos que com essa etapa a qualidade é muito maior.
Aproveite para acompanhar a nata.house em suas redes sociais para conferir tudo que temos feito e fique à vontade para tirar todas as suas dúvidas sobre como funcionamos. Vem falar com a gente!

Receba conteúdos sobre inovação digital, novas tecnologias, design e desenvolvimento.

Entre em contato

Telefones

+55 31 99291-5266

+1 650 691-5964

Endereço

R. Paraíba, 330, sala 1006

Belo Horizonte - MG - Brasil