SlideShare uma empresa Scribd logo
Revisão de Código
(Code Review)
Uma prática que depende da cultura
+
@parazito
parazito
leandroh
leandroheuert
Qual é o valor da revisão de código?
● Disseminação de conhecimento
● Mitigação de bugs
● "Double-check" da funcionalidade
● Problemas de segurança e desempenho
● Garantia de qualidade do código
● Propriedade do time ("ownership")
Pull Request vs Merge Request
O recurso de "merge request" do GitLab é equivalente ao recurso de
"pull request" do GitHub. Eles são ferramentas úteis para revisão de
código e gerenciamento de mudanças.
Como obter benefícios na revisão de código?
● Ter um pull request template (pull_request_template.md)
● Ter um guia de estilo de código para evitar discussões desnecessárias
● Reforçar esta prática no guia de estilo executando linters
Ao abrir um Pull Request
● Adicione algum contexto sobre a regra de negócio, para
que sua equipe possa entender por que este código está
sendo adicionado, alterado ou removido
● Se o seu PR for um WIP (ou rascunho/draft), adicione
algumas caixas de seleção ou lista com as tarefas ausentes
● Descrições com conteúdo visual, como gifs, capturas de
tela ou diagramas. Imagens e vídeos aceleram a
compreensão da mudança
● Defenda qualquer decisão arbitrária antes de iniciar a
discussão. Por exemplo, se as mudanças não estão
seguindo uma convenção, diga à sua equipe por que você
optou por esta solução
Ao revisar um Pull Request
Qualidade do código
● O código funciona? Verifique se a função e a lógica estão
corretas
● As funções, métodos e variáveis estão nomeados de
forma adequada?
● Os nomes estão semânticos e significativos para o seu
negócio?
● Está bem testado?
● O código é claro e fácil de entender?
● O código atende ao nosso guia de estilos?
● Existe algum código duplicado?
● Existe algum código comentado ou desnecessário?
● Existe algum bad smell ou algo suscetível a bug?
Design do código
● O código é o mais modular possível?
● Os pontos críticos são registrados adequadamente (logs)?
● O código considera as falhas? Apenas considera o
caminho feliz (happy path)?
● Existem soluções melhores ou mais simples?
● Existe algum problema de desempenho (N+1)?
● SELECT * ao invés de especificar os campos
● Usar map ao invés do pluck
● Não utilizar fragment cache para views que são muito
acessadas
● Levantar questões sobre criação de índices em novas
migrations
Performance
● Os dados de entrada são limpos? (Strong Parameters)
● Existe algum ponto de injeção SQL?
● Commits que expõem senhas (rebase -i)
● As informações confidenciais estão sendo codificadas ou
criptografadas? (Senhas, Tokens, Código de Cartão)
Segurança
Comentários confusos...
Comentários como este são confusos...
Comentários como este são confusos...
Comentários como este são confusos...
PRs Empáticos
- Review
- Dar e receber feedback
- Não apenas só querer resolver problemas
- Não querer resolver as coisas sem pensar
- Conversar da maneira que todos entendam
PRs Empáticos
Comentários como este são úteis...
Comentários como este são úteis...
Comentários como este são úteis...
Sugerindo alterações no GitHub
Comentários como este são úteis...
Comentários como este são úteis...
Comentários como este são úteis...
Comentários como este são úteis...
Conclusão
● A revisão de código não é
apenas legal; é uma prática
consolidada da indústria de
software
● Pull ou Merge Requests são
amplamente conhecidas hoje
em dia
● Se possível, automatize com
linters para que você possa se
concentrar no que importa
● A conversa em Pull Requests
deve ser algo produtivo
● Pull Requests como base de
conhecimento e documentação
de código
Boa revisão de código!
Dúvidas?

Mais conteúdo relacionado

Mais procurados

Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016
Bruno Maomeh
 
Nunca foi tao facil testar
Nunca foi tao facil testarNunca foi tao facil testar
Nunca foi tao facil testar
Elias Nogueira
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
saido_embalo1980
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
Luís Cobucci
 
Teste de software
Teste de softwareTeste de software
Teste de software
Randerson Mayllon
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHP
Douglas V. Pasqua
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
Marcos Garcia
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
Luís Cobucci
 
RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
Miguel Schmitz Grazziotin
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
Matheus Fechine de Moura
 
Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...
Renato Groff
 
Automatizando seus testes com Robot Framework
Automatizando seus testes com Robot FrameworkAutomatizando seus testes com Robot Framework
Automatizando seus testes com Robot Framework
Claudenir Freitas
 
Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014
Daniel Archer Marques Cramer
 
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Renato Groff
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Criciúma Dev
 
Automatizando seus testes com robot framework
Automatizando seus testes com robot frameworkAutomatizando seus testes com robot framework
Automatizando seus testes com robot framework
Claudenir Freitas
 
Engenharia rever sa mentebinaria
Engenharia rever sa   mentebinariaEngenharia rever sa   mentebinaria
Engenharia rever sa mentebinaria
Patrese Renan
 
Introdução ao Github actions - TDC Connections
Introdução ao Github actions - TDC ConnectionsIntrodução ao Github actions - TDC Connections
Introdução ao Github actions - TDC Connections
Guillaume Falourd
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
Adler Medrado
 
Bdd com spec flow
Bdd com spec flowBdd com spec flow
Bdd com spec flow
Cintia Armesto
 

Mais procurados (20)

Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016
 
Nunca foi tao facil testar
Nunca foi tao facil testarNunca foi tao facil testar
Nunca foi tao facil testar
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHP
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
 
Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - DevOp...
 
Automatizando seus testes com Robot Framework
Automatizando seus testes com Robot FrameworkAutomatizando seus testes com Robot Framework
Automatizando seus testes com Robot Framework
 
Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014
 
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
 
Automatizando seus testes com robot framework
Automatizando seus testes com robot frameworkAutomatizando seus testes com robot framework
Automatizando seus testes com robot framework
 
Engenharia rever sa mentebinaria
Engenharia rever sa   mentebinariaEngenharia rever sa   mentebinaria
Engenharia rever sa mentebinaria
 
Introdução ao Github actions - TDC Connections
Introdução ao Github actions - TDC ConnectionsIntrodução ao Github actions - TDC Connections
Introdução ao Github actions - TDC Connections
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
Bdd com spec flow
Bdd com spec flowBdd com spec flow
Bdd com spec flow
 

Semelhante a Revisão de Código - Uma prática que depende da cultura

Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
Samanta Cicilia
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
minastestingconference
 
[Roadsec23] Dominando Angular com o ChatGPT
[Roadsec23] Dominando Angular com o ChatGPT[Roadsec23] Dominando Angular com o ChatGPT
[Roadsec23] Dominando Angular com o ChatGPT
Wender Machado
 
DevQA | Da zona de conforto ao comprometimento com a qualidade
DevQA | Da zona de conforto ao comprometimento com a qualidadeDevQA | Da zona de conforto ao comprometimento com a qualidade
DevQA | Da zona de conforto ao comprometimento com a qualidade
Kamilla Queiroz Xavier
 
Sonarqube
SonarqubeSonarqube
Sonarqube
CDS
 
Teste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste vocêTeste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste você
Tiago Link
 
tdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdftdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdf
Douglas Siviotti
 
SonarQube
SonarQubeSonarQube
SonarQube
CDS
 
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day CuritibaUtilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Cleiton Felipe Moraes
 
Fatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um SoftwareFatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um Software
Pablo Dall'Oglio
 
Apresentação Gerpro
Apresentação GerproApresentação Gerpro
Apresentação Gerpro
rafahreis
 
Compartilhando qualidade e conhecimento com code review
Compartilhando qualidade e conhecimento com code reviewCompartilhando qualidade e conhecimento com code review
Compartilhando qualidade e conhecimento com code review
Antonio Spinelli
 
Day 0 iniciando na carreira em ti
Day 0   iniciando na carreira em tiDay 0   iniciando na carreira em ti
Day 0 iniciando na carreira em ti
Luis Henrique Costa
 
Delphi Conference 2012 - Qualidade no Código
Delphi Conference 2012 - Qualidade no CódigoDelphi Conference 2012 - Qualidade no Código
Delphi Conference 2012 - Qualidade no Código
José Araújo
 
Django
DjangoDjango
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
Rodrigo Branas
 
Apresentacao dev ops
Apresentacao dev opsApresentacao dev ops
Apresentacao dev ops
Carlos Wagner Costa
 
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu SoftwareDevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
André Dias
 
Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013
André Borgonovo
 
Pipeconf no CoffeOps Campinas
Pipeconf no CoffeOps CampinasPipeconf no CoffeOps Campinas
Pipeconf no CoffeOps Campinas
Aécio Pires
 

Semelhante a Revisão de Código - Uma prática que depende da cultura (20)

Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
 
[Roadsec23] Dominando Angular com o ChatGPT
[Roadsec23] Dominando Angular com o ChatGPT[Roadsec23] Dominando Angular com o ChatGPT
[Roadsec23] Dominando Angular com o ChatGPT
 
DevQA | Da zona de conforto ao comprometimento com a qualidade
DevQA | Da zona de conforto ao comprometimento com a qualidadeDevQA | Da zona de conforto ao comprometimento com a qualidade
DevQA | Da zona de conforto ao comprometimento com a qualidade
 
Sonarqube
SonarqubeSonarqube
Sonarqube
 
Teste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste vocêTeste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste você
 
tdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdftdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdf
 
SonarQube
SonarQubeSonarQube
SonarQube
 
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day CuritibaUtilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
 
Fatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um SoftwareFatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um Software
 
Apresentação Gerpro
Apresentação GerproApresentação Gerpro
Apresentação Gerpro
 
Compartilhando qualidade e conhecimento com code review
Compartilhando qualidade e conhecimento com code reviewCompartilhando qualidade e conhecimento com code review
Compartilhando qualidade e conhecimento com code review
 
Day 0 iniciando na carreira em ti
Day 0   iniciando na carreira em tiDay 0   iniciando na carreira em ti
Day 0 iniciando na carreira em ti
 
Delphi Conference 2012 - Qualidade no Código
Delphi Conference 2012 - Qualidade no CódigoDelphi Conference 2012 - Qualidade no Código
Delphi Conference 2012 - Qualidade no Código
 
Django
DjangoDjango
Django
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Apresentacao dev ops
Apresentacao dev opsApresentacao dev ops
Apresentacao dev ops
 
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu SoftwareDevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
 
Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013
 
Pipeconf no CoffeOps Campinas
Pipeconf no CoffeOps CampinasPipeconf no CoffeOps Campinas
Pipeconf no CoffeOps Campinas
 

Revisão de Código - Uma prática que depende da cultura

  • 1. Revisão de Código (Code Review) Uma prática que depende da cultura +
  • 3. Qual é o valor da revisão de código? ● Disseminação de conhecimento ● Mitigação de bugs ● "Double-check" da funcionalidade ● Problemas de segurança e desempenho ● Garantia de qualidade do código ● Propriedade do time ("ownership")
  • 4. Pull Request vs Merge Request O recurso de "merge request" do GitLab é equivalente ao recurso de "pull request" do GitHub. Eles são ferramentas úteis para revisão de código e gerenciamento de mudanças.
  • 5. Como obter benefícios na revisão de código?
  • 6. ● Ter um pull request template (pull_request_template.md)
  • 7. ● Ter um guia de estilo de código para evitar discussões desnecessárias
  • 8. ● Reforçar esta prática no guia de estilo executando linters
  • 9. Ao abrir um Pull Request ● Adicione algum contexto sobre a regra de negócio, para que sua equipe possa entender por que este código está sendo adicionado, alterado ou removido ● Se o seu PR for um WIP (ou rascunho/draft), adicione algumas caixas de seleção ou lista com as tarefas ausentes ● Descrições com conteúdo visual, como gifs, capturas de tela ou diagramas. Imagens e vídeos aceleram a compreensão da mudança ● Defenda qualquer decisão arbitrária antes de iniciar a discussão. Por exemplo, se as mudanças não estão seguindo uma convenção, diga à sua equipe por que você optou por esta solução
  • 10. Ao revisar um Pull Request
  • 11. Qualidade do código ● O código funciona? Verifique se a função e a lógica estão corretas ● As funções, métodos e variáveis estão nomeados de forma adequada? ● Os nomes estão semânticos e significativos para o seu negócio? ● Está bem testado? ● O código é claro e fácil de entender? ● O código atende ao nosso guia de estilos? ● Existe algum código duplicado? ● Existe algum código comentado ou desnecessário? ● Existe algum bad smell ou algo suscetível a bug?
  • 12. Design do código ● O código é o mais modular possível? ● Os pontos críticos são registrados adequadamente (logs)? ● O código considera as falhas? Apenas considera o caminho feliz (happy path)? ● Existem soluções melhores ou mais simples?
  • 13. ● Existe algum problema de desempenho (N+1)? ● SELECT * ao invés de especificar os campos ● Usar map ao invés do pluck ● Não utilizar fragment cache para views que são muito acessadas ● Levantar questões sobre criação de índices em novas migrations Performance
  • 14. ● Os dados de entrada são limpos? (Strong Parameters) ● Existe algum ponto de injeção SQL? ● Commits que expõem senhas (rebase -i) ● As informações confidenciais estão sendo codificadas ou criptografadas? (Senhas, Tokens, Código de Cartão) Segurança
  • 16. Comentários como este são confusos...
  • 17. Comentários como este são confusos...
  • 18. Comentários como este são confusos...
  • 20. - Review - Dar e receber feedback - Não apenas só querer resolver problemas - Não querer resolver as coisas sem pensar - Conversar da maneira que todos entendam PRs Empáticos
  • 21. Comentários como este são úteis...
  • 22. Comentários como este são úteis...
  • 23. Comentários como este são úteis...
  • 25. Comentários como este são úteis...
  • 26. Comentários como este são úteis...
  • 27. Comentários como este são úteis...
  • 28. Comentários como este são úteis...
  • 29. Conclusão ● A revisão de código não é apenas legal; é uma prática consolidada da indústria de software ● Pull ou Merge Requests são amplamente conhecidas hoje em dia ● Se possível, automatize com linters para que você possa se concentrar no que importa ● A conversa em Pull Requests deve ser algo produtivo ● Pull Requests como base de conhecimento e documentação de código
  • 30. Boa revisão de código! Dúvidas?