O que devo procurar em um code review
O QUE DEVO
PROCURAR EM UM
CODE REVIEW?
http://bit.ly/procurar-code-review
RODRIGO CASTRO
Desenvolvedor Android @ Concrete
Analista de Sistemas pela UFMS/CPCX.
De Coxim/MS para o mundo!
http://castrors.github.io
rodrigo.castro@concrete.com.br
@rodrigocastro_o
SUMÁRIO
•Projeto
•Legibilidade e Manutenibilidade
•Funcionalidade
•Testes
•Boas práticas de programação
•Code Review
•Ferramentas
PROJETO
O novo código...
● se adequa a arquitetura existente?
● segue SOLID, DDD ou outro paradigma de projeto que o time adota?
● utiliza padrões de projetos adequados?
● está no lugar certo?
● reutiliza algo já existente no projeto ou introduz duplicação de
código?
● adiciona complexidade desnecessária?
LEGIBILIDADE E
MANUTENIBILIDADE
LEGIBILIDADE E
MANUTENIBILIDADE
● Os nomes(campos, variáveis, parametros, métodos e classes) refletem
no que eles representam?
● É possível entender o que o código faz apenas lendo ele?
● É possível entender o que o teste faz?
● Os testes cobrem uma boa parte das classes? Ele cobre o caminho
feliz e os casos excepcionais? Existem classes que não foram
cobertas?
FUNCIONALIDADE
FUNCIONALIDADE
● O código realmente faz o que ele deveria fazer? Existem testes
automatizados para garantir se o código está correto, se os testes
realmente testam o código de acordo com os requisitos?
● O código contém algum bug, como acidentalmente trocar um ''&&''
por ''||''?
TESTES
Pergunte para si mesmo
essas perguntas:
● Existe testes para esse novo código?
● Os testes cobrem pelo menos as partes confusas ou complicadas do
código?
● Eu consigo entender os testes? (Robot Pattern - @jakewharton)
● Os testes verificam os requisitos?
● Eu consigo pensar em partes não cobertas do código que deveriam
ser testadas?
● Existem testes para aspectos de segurança?
● Existem testes de performance?
BOAS PRÁTICAS DE
PROGRAMAÇÃO
BOAS PRÁTICAS DE
PROGRAMAÇÃO
SOLID
DRY
Padrões de Projeto
Guidelines
SRP - The single responsibility principle - A class should
have one, and only one, reason to change.
OCP - The Open Closed Principle - You should be able to
extend a classes behavior, without modifying it.
LSP - The Liskov Substitution Principle - Derived
classes must be substitutable for their base classes.
ISP - The Interface Segregation Principle - Make fine
grained interfaces that are client specific.
DIP- The Dependency Inversion Principle - Depend on
abstractions, not on concretions.
BOAS PRÁTICAS DE
PROGRAMAÇÃO
SOLID
DRY
Padrões de Projeto
Guidelines
DRY – “Don’t Repeat Yourself” – suggests that writing the
same code over and over again is a bad thing.
BOAS PRÁTICAS DE
PROGRAMAÇÃO
SOLID
DRY
Padrões de Projeto
Guidelines
BOAS PRÁTICAS DE
PROGRAMAÇÃO
SOLID
DRY
Padrões de Projeto
Guidelines
"Any fool can write code that a computer can understand. Good
programmers write code that humans can understand.
MARTIN FOWLER, REFACTORING - 1999
CODE REVIEW
CODE REVIEW
WIKI
Checklist
Tenha um documento que contenha todas as práticas
adotadas no seu projeto.
É um documento vivo, que pode e deve ser alterado
constantemente, acompanhando a evolução do projeto.
Deve estar sempre disponível aos desenvolvedores e
revisores.
Wiki? Livro? Etc.
CODE REVIEW
WIKI
Checklist Categorize cada ponto que foram citados anteriormente,
e separe em uma checklist. Desta maneira facilitará tanto
a vida do desenvolvedor na hora de criar um pull request
quanto a vida do revisor ao verificar o que foi submetido.
O que devo procurar em um code review
http://www.osnews.com/story/19266/WTFs_m
FERRAMENTAS
FERRAMENTAS
Android Lint
Checkstyle
Findbugs
SonarQube
O Android Studio oferece uma ferramenta de verificação
de código denominada lint para ajudar a identificar e
corrigir problemas com a qualidade estrutural do código,
sem executar o aplicativo nem criar casos de teste.
Gera um relatório .html o qual mostra o erro, gravidade,
explicação detalhada e como corrigir.
FERRAMENTAS
Android Lint
Checkstyle
Findbugs
SonarQube
Checkstyle é uma ferramenta de desenvolvimento para
ajudar os programadores a escrever código Java que adira
a um padrão de codificação. Ele automatiza o processo de
verificação do código Java para poupar humanos dessa
tarefa chata (mas importante). Isso o torna ideal para
projetos que desejam impor um padrão de codificação.
Pontos a serem validados: Magic Number, Nomenclatura
(de métodos, variáveis, constantes), Identação, uso correto
de chaves.
FERRAMENTAS
Android Lint
Checkstyle
Findbugs
SonarQube
FindBugs é um analisador de código estático de código
aberto criado por Bill Pugh e David Hovemeyer, que
detecta possíveis erros em programas Java. Os erros
potenciais são classificados em quatro categorias: (i) mais
assustador, (ii) assustador, (iii) preocupante e (iv) de
preocupação. Esta é uma pista para o desenvolvedor
sobre o seu possível impacto ou gravidade. FindBugs
opera em bytecode Java, em vez de código fonte.
Categorias de bugs avaliadas: Bad Practice, Malicious code
vunerability, Multitheaded correctness, Performance,
Security, Dodgy code.
FERRAMENTAS
Android Lint
Checkstyle
Findbugs
SonarQube
O SonarSource oferece o que provavelmente é o melhor
analisador de código estático que você pode encontrar no
mercado para Java. Com base no nosso próprio front-end
do compilador Java, ele usa as técnicas mais avançadas
(correspondência de padrões, análise de fluxo de dados)
para analisar código e encontrar cheiros de código, bugs
e vulnerabilidades de segurança. Quanto a qualquer
produto que desenvolvamos no SonarSource, foi
construído com os seguintes princípios: profundidade,
precisão e velocidade.
O que devo procurar em um code review
O que devo procurar em um code review
O que devo procurar em um code review
CODEBASEMerge Requests /
Pull Requests
Autor
Conversa direta com o
desenvolvedor
WIKI e
Checklist
MR em avaliação
👎 ou 👍
DICAS DE LIVROS
BIBLIOGRAFIA
● https://leanpub.com/whattolookforinacodereview
● http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
● https://martinfowler.com/books/refactoring.html
● https://www.slideshare.net/ChristianeMoraisSilv
● http://wiki.c2.com/?GangOfFour
● https://source.android.com/source/code-style
● https://android.github.io/kotlin-guides/style.html
● https://developer.android.com/studio/write/lint.html
● http://checkstyle.sourceforge.net/index.html
● https://docs.gradle.org/current/userguide/checkstyle_plugin.html
● http://findbugs.sourceforge.net/
● https://www.sonarqube.org/
OBRIGADO!
Centro
Av. Presidente Wilson,
231 - 29º andar
(21) 2240-2030
Cidade Monções
Av. Nações Unidas,
11.541 - 3º andar
(11) 4119-0449
Savassi
Av. Getúlio Vargas, 671
Sala 800 - 8º andar
(31) 3360-8900
www.concrete.com.b
r

Mais conteúdo relacionado

PDF
TDD para "meros mortais"
PPTX
TDD: Técnicas, Benefícios e Limitação
PDF
ArchUnit: testando a arquitetura de sua aplicação Java
PDF
Refatorar é preciso. Palestra TDC 2014
PDF
A Carreira de Desenvolvedor: do Jr ao Sênior
PDF
Conheça Visual Studio IntelliCode e Visual Studio Live Share
PPSX
TDC2018SP | Trilha Arq .Net - Performance e feature
PDF
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDD para "meros mortais"
TDD: Técnicas, Benefícios e Limitação
ArchUnit: testando a arquitetura de sua aplicação Java
Refatorar é preciso. Palestra TDC 2014
A Carreira de Desenvolvedor: do Jr ao Sênior
Conheça Visual Studio IntelliCode e Visual Studio Live Share
TDC2018SP | Trilha Arq .Net - Performance e feature
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...

Mais procurados (20)

PDF
[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?
PDF
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
PDF
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
PDF
Revisão de Código - Uma prática que depende da cultura
PDF
Código limpo php
PDF
Clean Code na prática
PDF
Engenharia de Software - Unimep/Pronatec - Aula 1
PDF
O programador pragmático
PDF
O Programador Pragmático
PDF
O papel e a carreira do arquiteto de software
PPTX
Programe a eficácia do seu código
PDF
Testes Unitários
PPTX
Os Rumos do Teste de Software
PPT
Desenvolvendo BOTs com Telegram e Javascript - TDC2016
PDF
Apresentacao Qualificação - João Brunet
PDF
Design orientado a objetos com foco nos testes
PPTX
Test-Driven Development - Introdução
PDF
TDD para Java EE
PDF
Engenharia de Software - Unimep/Pronatec - Aula 3
[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Revisão de Código - Uma prática que depende da cultura
Código limpo php
Clean Code na prática
Engenharia de Software - Unimep/Pronatec - Aula 1
O programador pragmático
O Programador Pragmático
O papel e a carreira do arquiteto de software
Programe a eficácia do seu código
Testes Unitários
Os Rumos do Teste de Software
Desenvolvendo BOTs com Telegram e Javascript - TDC2016
Apresentacao Qualificação - João Brunet
Design orientado a objetos com foco nos testes
Test-Driven Development - Introdução
TDD para Java EE
Engenharia de Software - Unimep/Pronatec - Aula 3
Anúncio

Semelhante a O que devo procurar em um code review (20)

PDF
Seu app a prova de gambiarras (ou não) - Ferramentas de validaSPção de código
PDF
DevQA: Como medir qualidade de código ?
PDF
Clean code
PDF
ESP204 - Cap. 9 - Refactoring.pdf
PPTX
Dev rioclaro gerenciando o ciclo de vida das suas aplicações em larga escal
PDF
Clean code clickbus
PDF
Code review
PDF
Código limpo: Boas práticas e sua importância no desenvolvimento de software.
PDF
Code Review
PPTX
Potencializando a qualidade de código
PDF
clean code
PDF
Orientação a Objetos - Da Teoria a Pratica
PDF
Orientacao A Objetos Da Teoria A Pratica Em Java
PDF
Monografia eng soft1_halan
PDF
Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - ...
PDF
10-codigo-limpo-parte-3.pdf
ODP
XPCE - Qualidade no Código
PDF
qualidade de código: boas práticas, princípios e padrões
PPTX
Estudos Technocorp
PDF
Orientação a objetos da teoria a prática em java
Seu app a prova de gambiarras (ou não) - Ferramentas de validaSPção de código
DevQA: Como medir qualidade de código ?
Clean code
ESP204 - Cap. 9 - Refactoring.pdf
Dev rioclaro gerenciando o ciclo de vida das suas aplicações em larga escal
Clean code clickbus
Code review
Código limpo: Boas práticas e sua importância no desenvolvimento de software.
Code Review
Potencializando a qualidade de código
clean code
Orientação a Objetos - Da Teoria a Pratica
Orientacao A Objetos Da Teoria A Pratica Em Java
Monografia eng soft1_halan
Compilar Não Basta: Escreva código para pessoas e não apenas para máquinas - ...
10-codigo-limpo-parte-3.pdf
XPCE - Qualidade no Código
qualidade de código: boas práticas, princípios e padrões
Estudos Technocorp
Orientação a objetos da teoria a prática em java
Anúncio

Último (20)

PDF
Processamento da remessa no SAP ERP, SCM610 Col15
PDF
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
PPTX
Introdução a Computação em Nuvem-parte2-T2
PPTX
Importacao_Ordem_Customizacao_SAP_S4HANA.pptx
PPT
01 - Arquitetura de Computadores 1 TEC [Salvo automaticamente].ppt
PDF
ASCENSÃO E QUEDA DO SOFTWARE LIVRE NO ESTADO BRASILEIRO
PPTX
Formação aaaaaaaaadsdsfg er rsgrsgesf efsfsefsf e LEEI.pptx
PPT
inteligencia_artificial REPRESENTAÇÃO DO CONHECECIMENTO
PPT
Apresentacao Do Trabalho de Inteligencia
PPT
Padrões de Beleza I - Estética Corporal e Saúde
PDF
Administração de qualidade no SAP Extended Warehouse Management, EWM140 Col26
PPTX
RCSOFTdfsdfrvadfvdfvargfvevevrervevqer.pptx
PDF
Integração da produção com o SAP Extended Warehouse Management, EWM130 Col26
PDF
Metodologia Scrumban-XP - Um Guia Rápido (MrSomebody19).pdf
PDF
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
PPTX
Do código à carreira: O Profissional de TI que o mercado realmente quer - com...
PDF
instalacoes eletricas para industria apressentacao basicas
PDF
Arquitetura de Software slides sommerville
PDF
pdfcoffee.com_metalografia-25-pdf-free.pdf
PPTX
Legislação aeronautica na aviação civil Brasileira
Processamento da remessa no SAP ERP, SCM610 Col15
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
Introdução a Computação em Nuvem-parte2-T2
Importacao_Ordem_Customizacao_SAP_S4HANA.pptx
01 - Arquitetura de Computadores 1 TEC [Salvo automaticamente].ppt
ASCENSÃO E QUEDA DO SOFTWARE LIVRE NO ESTADO BRASILEIRO
Formação aaaaaaaaadsdsfg er rsgrsgesf efsfsefsf e LEEI.pptx
inteligencia_artificial REPRESENTAÇÃO DO CONHECECIMENTO
Apresentacao Do Trabalho de Inteligencia
Padrões de Beleza I - Estética Corporal e Saúde
Administração de qualidade no SAP Extended Warehouse Management, EWM140 Col26
RCSOFTdfsdfrvadfvdfvargfvevevrervevqer.pptx
Integração da produção com o SAP Extended Warehouse Management, EWM130 Col26
Metodologia Scrumban-XP - Um Guia Rápido (MrSomebody19).pdf
Aula 9 - Funções 202yttvrcrg5-1.pptx.pdf
Do código à carreira: O Profissional de TI que o mercado realmente quer - com...
instalacoes eletricas para industria apressentacao basicas
Arquitetura de Software slides sommerville
pdfcoffee.com_metalografia-25-pdf-free.pdf
Legislação aeronautica na aviação civil Brasileira

O que devo procurar em um code review

  • 2. O QUE DEVO PROCURAR EM UM CODE REVIEW? http://bit.ly/procurar-code-review
  • 3. RODRIGO CASTRO Desenvolvedor Android @ Concrete Analista de Sistemas pela UFMS/CPCX. De Coxim/MS para o mundo! http://castrors.github.io [email protected] @rodrigocastro_o
  • 6. O novo código... ● se adequa a arquitetura existente? ● segue SOLID, DDD ou outro paradigma de projeto que o time adota? ● utiliza padrões de projetos adequados? ● está no lugar certo? ● reutiliza algo já existente no projeto ou introduz duplicação de código? ● adiciona complexidade desnecessária?
  • 8. LEGIBILIDADE E MANUTENIBILIDADE ● Os nomes(campos, variáveis, parametros, métodos e classes) refletem no que eles representam? ● É possível entender o que o código faz apenas lendo ele? ● É possível entender o que o teste faz? ● Os testes cobrem uma boa parte das classes? Ele cobre o caminho feliz e os casos excepcionais? Existem classes que não foram cobertas?
  • 10. FUNCIONALIDADE ● O código realmente faz o que ele deveria fazer? Existem testes automatizados para garantir se o código está correto, se os testes realmente testam o código de acordo com os requisitos? ● O código contém algum bug, como acidentalmente trocar um ''&&'' por ''||''?
  • 12. Pergunte para si mesmo essas perguntas: ● Existe testes para esse novo código? ● Os testes cobrem pelo menos as partes confusas ou complicadas do código? ● Eu consigo entender os testes? (Robot Pattern - @jakewharton) ● Os testes verificam os requisitos? ● Eu consigo pensar em partes não cobertas do código que deveriam ser testadas? ● Existem testes para aspectos de segurança? ● Existem testes de performance?
  • 14. BOAS PRÁTICAS DE PROGRAMAÇÃO SOLID DRY Padrões de Projeto Guidelines SRP - The single responsibility principle - A class should have one, and only one, reason to change. OCP - The Open Closed Principle - You should be able to extend a classes behavior, without modifying it. LSP - The Liskov Substitution Principle - Derived classes must be substitutable for their base classes. ISP - The Interface Segregation Principle - Make fine grained interfaces that are client specific. DIP- The Dependency Inversion Principle - Depend on abstractions, not on concretions.
  • 15. BOAS PRÁTICAS DE PROGRAMAÇÃO SOLID DRY Padrões de Projeto Guidelines DRY – “Don’t Repeat Yourself” – suggests that writing the same code over and over again is a bad thing.
  • 18. "Any fool can write code that a computer can understand. Good programmers write code that humans can understand. MARTIN FOWLER, REFACTORING - 1999
  • 20. CODE REVIEW WIKI Checklist Tenha um documento que contenha todas as práticas adotadas no seu projeto. É um documento vivo, que pode e deve ser alterado constantemente, acompanhando a evolução do projeto. Deve estar sempre disponível aos desenvolvedores e revisores. Wiki? Livro? Etc.
  • 21. CODE REVIEW WIKI Checklist Categorize cada ponto que foram citados anteriormente, e separe em uma checklist. Desta maneira facilitará tanto a vida do desenvolvedor na hora de criar um pull request quanto a vida do revisor ao verificar o que foi submetido.
  • 25. FERRAMENTAS Android Lint Checkstyle Findbugs SonarQube O Android Studio oferece uma ferramenta de verificação de código denominada lint para ajudar a identificar e corrigir problemas com a qualidade estrutural do código, sem executar o aplicativo nem criar casos de teste. Gera um relatório .html o qual mostra o erro, gravidade, explicação detalhada e como corrigir.
  • 26. FERRAMENTAS Android Lint Checkstyle Findbugs SonarQube Checkstyle é uma ferramenta de desenvolvimento para ajudar os programadores a escrever código Java que adira a um padrão de codificação. Ele automatiza o processo de verificação do código Java para poupar humanos dessa tarefa chata (mas importante). Isso o torna ideal para projetos que desejam impor um padrão de codificação. Pontos a serem validados: Magic Number, Nomenclatura (de métodos, variáveis, constantes), Identação, uso correto de chaves.
  • 27. FERRAMENTAS Android Lint Checkstyle Findbugs SonarQube FindBugs é um analisador de código estático de código aberto criado por Bill Pugh e David Hovemeyer, que detecta possíveis erros em programas Java. Os erros potenciais são classificados em quatro categorias: (i) mais assustador, (ii) assustador, (iii) preocupante e (iv) de preocupação. Esta é uma pista para o desenvolvedor sobre o seu possível impacto ou gravidade. FindBugs opera em bytecode Java, em vez de código fonte. Categorias de bugs avaliadas: Bad Practice, Malicious code vunerability, Multitheaded correctness, Performance, Security, Dodgy code.
  • 28. FERRAMENTAS Android Lint Checkstyle Findbugs SonarQube O SonarSource oferece o que provavelmente é o melhor analisador de código estático que você pode encontrar no mercado para Java. Com base no nosso próprio front-end do compilador Java, ele usa as técnicas mais avançadas (correspondência de padrões, análise de fluxo de dados) para analisar código e encontrar cheiros de código, bugs e vulnerabilidades de segurança. Quanto a qualquer produto que desenvolvamos no SonarSource, foi construído com os seguintes princípios: profundidade, precisão e velocidade.
  • 32. CODEBASEMerge Requests / Pull Requests Autor Conversa direta com o desenvolvedor WIKI e Checklist MR em avaliação 👎 ou 👍
  • 34. BIBLIOGRAFIA ● https://leanpub.com/whattolookforinacodereview ● http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod ● https://martinfowler.com/books/refactoring.html ● https://www.slideshare.net/ChristianeMoraisSilv ● http://wiki.c2.com/?GangOfFour ● https://source.android.com/source/code-style ● https://android.github.io/kotlin-guides/style.html ● https://developer.android.com/studio/write/lint.html ● http://checkstyle.sourceforge.net/index.html ● https://docs.gradle.org/current/userguide/checkstyle_plugin.html ● http://findbugs.sourceforge.net/ ● https://www.sonarqube.org/
  • 36. Centro Av. Presidente Wilson, 231 - 29º andar (21) 2240-2030 Cidade Monções Av. Nações Unidas, 11.541 - 3º andar (11) 4119-0449 Savassi Av. Getúlio Vargas, 671 Sala 800 - 8º andar (31) 3360-8900 www.concrete.com.b r