SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
Seu App a prova de
gambiarras (ou não)
Ferramentas de validação de código
Christiane Morais
Android Developer @ Concrete Solutions
@ChrisCirce
Chris.morais2
christianemorais
Tópicos
● Boas práticas de programação
● Padronização
● Code-Review
● Testes
● Ferramentas
● #Comofaz
● Bibliografia
Boas Práticas
de
Programação
Boas Práticas de Programação
Algumas boas práticas de programação são válidas para qualquer linguagem.
● Métodos com responsabilidade única
● Evitar classes gigantes. Separe responsabilidades
● Não Copie e Cole!
● Nomes de classe, métodos e variáveis que façam sentido. Nada de usar, x, x1, a, var…
● Usar try catch corretamente
● Tratamento de strings adequado
● Performance na leitura de listas
● Já ouviram falar de SOLID?
Boas Práticas de
Programação
O google possui um Guideline para código Java e um para
Android.
O Guideline mais recomendado a ser seguido é o de Java. (O
de Android recomenda usar notação Húngara :/ )
Padronização
Padronização ● Identifique os padrões já existentes no seu
projeto
○ Documente
● Levante padrões utilizados pela comunidade.
○ Discuta-os com seus amiguinhos
○ Aplique os que forem aprovados no seu projeto
○ Documente
● E Documente!
Code-Review
Code-Review
Code-review é uma das técnicas utilizadas para avaliar a
qualidade do código a ser adicionada no projeto. O ideal é que
quem desenvolveu a feature, não faça seu próprio code-review.
Fatores importantes:
● Não leve a avaliação como algo pessoal
● Não avalie o código de forma pessoal
● Tenha um checklist do que é avaliado no code-review
● Siga o checklist!
Code-Review
O que deve ser avaliado no code-review:
● A utilização dos padrões adotados
● Performance
● Testes
● Segurança
● Estrutura de dados
● SOLID
● Boiler Plate
● Validações não automatizáveis
● Enfim: TUDO!
Testes o/
(Sim, de novo)
Testes
Testes são uma parte fundamental do desenvolvimento.
Somente com testes podemos garantir que uma alteração não
afeta o que já foi feito e que um bug corrigido não irá se
repetir.
Escrevam testes. Por favor!
Ferramentas
● Android Lint
● Checkstyle
● FindBugs
● SonarQube
Checkstyle
O checkstyle é um plugin que se adiciona pelo Gradle que valida pontos de
padronização de código java.
Alguns pontos que podem ser validados:
● Magic Number
● Nome de método / Variável / Constantes
● Indentação com Tab versus Espaço
● Tamanho da linha
● Espaçamento
● O uso correto de {}.
Android Lint
Essa é a ferramenta mais simples de se utilizar.
1. Execute o comando no terminal: ./gradlew lint
2. Um relatório .html será gerado no diretório:
app/build/outputs
O relatório mostra o erro, a gravidade e uma explicação
detalhada do erro e como corrigir.
Findbugs
Identifica código Java que são passíveis de bugs.
Algumas categorias de bugs avaliadas:
● Bad Practice
● Malicious code vulnerability
● Multithreaded correctness
● Performance
● Security
● Dodgy code
SonarQube
#ComoFaz
#ComoFaz
Basicamente você precisa de um conhecimento básico de
Gradle, mas não se desespere a documentação deles é muito
simples de ser seguida. :)
#Checkstyle
Para ativar o checkstyle é necessário criar uma task customizada no gradle:
#Checkstyle
Agora você precisa configurar o .xml com as regras de validação:
Bibliografia
Bibliografia
● Android Lint: http://tools.android.com/tips/lint
● Checkstyle: http://checkstyle.sourceforge.net/
● Findbugs: http://findbugs.sourceforge.net/
● Google Styleguide: https://google.github.io/styleguide/javaguide.html
● SonarQube: https://www.sonarqube.org/
● What look for in a Code-Review (e-book gratis)
https://leanpub.com/whattolookforinacodereview
● Espresso:
https://developer.android.com/training/testing/ui-testing/espresso-testing.html
● Testes no Android com Espresso:
http://www.concretesolutions.com.br/2016/09/02/testes-android-espresso-1/
● Gradle: https://gradle.org/
● SOLID no Android - Marcello Galhardo:
https://www.youtube.com/watch?v=grW2uDOvzeU
Seu app a prova de gambiarras (ou não) - Ferramentas de validaSPção de código

Mais conteúdo relacionado

Mais procurados

Exercícios teste de software
Exercícios   teste de softwareExercícios   teste de software
Exercícios teste de software
marildovezaro
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmática
elliando dias
 

Mais procurados (20)

Python tdc2019
Python tdc2019 Python tdc2019
Python tdc2019
 
DevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágilDevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágil
 
Exercícios teste de software
Exercícios   teste de softwareExercícios   teste de software
Exercícios teste de software
 
Instituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitáriosInstituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitários
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmática
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágil
 
Casperjs-tdc-2016.ppt
Casperjs-tdc-2016.pptCasperjs-tdc-2016.ppt
Casperjs-tdc-2016.ppt
 
Be React. Do Tests!
Be React. Do Tests!Be React. Do Tests!
Be React. Do Tests!
 
Tester - Como e onde atuar - Camila Labes
Tester - Como e onde atuar - Camila LabesTester - Como e onde atuar - Camila Labes
Tester - Como e onde atuar - Camila Labes
 
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil.
SEMINFO 2014 -  Teste de software, uma área, uma carreira, um novo perfil.SEMINFO 2014 -  Teste de software, uma área, uma carreira, um novo perfil.
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil.
 
Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)
Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)
Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)
 
Automação em Wearables para Android
Automação em Wearables para AndroidAutomação em Wearables para Android
Automação em Wearables para Android
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
 
Apresentação tdc 2016 - trilha de testes
Apresentação tdc   2016 - trilha de testesApresentação tdc   2016 - trilha de testes
Apresentação tdc 2016 - trilha de testes
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
TDD e UnitTest em Java
TDD e UnitTest em JavaTDD e UnitTest em Java
TDD e UnitTest em Java
 
Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu código
 
Unit test & TDD
Unit test & TDDUnit test & TDD
Unit test & TDD
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
 
Revisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaRevisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da cultura
 

Semelhante a Seu app a prova de gambiarras (ou não) - Ferramentas de validaSPção de código

Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Gabriel Rubens
 
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Gabriel Rubens
 
Qualidade em Aplicações Android - Automação de Testes Funcionais com Robotium
Qualidade em Aplicações Android - Automação de Testes Funcionais com  RobotiumQualidade em Aplicações Android - Automação de Testes Funcionais com  Robotium
Qualidade em Aplicações Android - Automação de Testes Funcionais com Robotium
Elvírio Junior
 

Semelhante a Seu app a prova de gambiarras (ou não) - Ferramentas de validaSPção de código (20)

Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
 
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...
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade I
 
O programador pragmático
O programador pragmáticoO programador pragmático
O programador pragmático
 
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
 
Profissão programador práticas para melhoria contínua fatec pg setembro 2013
Profissão programador práticas para melhoria contínua fatec pg setembro 2013Profissão programador práticas para melhoria contínua fatec pg setembro 2013
Profissão programador práticas para melhoria contínua fatec pg setembro 2013
 
Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016
 
A Carreira de Desenvolvedor: do Jr ao Sênior
A Carreira de Desenvolvedor: do Jr ao SêniorA Carreira de Desenvolvedor: do Jr ao Sênior
A Carreira de Desenvolvedor: do Jr ao Sênior
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreira
 
Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
 
Qualidade em Aplicações Android - Automação de Testes Funcionais com Robotium
Qualidade em Aplicações Android - Automação de Testes Funcionais com  RobotiumQualidade em Aplicações Android - Automação de Testes Funcionais com  Robotium
Qualidade em Aplicações Android - Automação de Testes Funcionais com Robotium
 
Testes de Caixa Branca e Métricas de Código
Testes de Caixa Branca e Métricas de CódigoTestes de Caixa Branca e Métricas de Código
Testes de Caixa Branca e Métricas de Código
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
 
Cultura de testes
Cultura de testesCultura de testes
Cultura de testes
 
TesteDeSoftware_WorkshopSINFO2014.pdf
TesteDeSoftware_WorkshopSINFO2014.pdfTesteDeSoftware_WorkshopSINFO2014.pdf
TesteDeSoftware_WorkshopSINFO2014.pdf
 

Seu app a prova de gambiarras (ou não) - Ferramentas de validaSPção de código

  • 1. Seu App a prova de gambiarras (ou não) Ferramentas de validação de código
  • 2. Christiane Morais Android Developer @ Concrete Solutions @ChrisCirce Chris.morais2 christianemorais
  • 3. Tópicos ● Boas práticas de programação ● Padronização ● Code-Review ● Testes ● Ferramentas ● #Comofaz ● Bibliografia
  • 5. Boas Práticas de Programação Algumas boas práticas de programação são válidas para qualquer linguagem. ● Métodos com responsabilidade única ● Evitar classes gigantes. Separe responsabilidades ● Não Copie e Cole! ● Nomes de classe, métodos e variáveis que façam sentido. Nada de usar, x, x1, a, var… ● Usar try catch corretamente ● Tratamento de strings adequado ● Performance na leitura de listas ● Já ouviram falar de SOLID?
  • 6. Boas Práticas de Programação O google possui um Guideline para código Java e um para Android. O Guideline mais recomendado a ser seguido é o de Java. (O de Android recomenda usar notação Húngara :/ )
  • 7.
  • 9.
  • 10. Padronização ● Identifique os padrões já existentes no seu projeto ○ Documente ● Levante padrões utilizados pela comunidade. ○ Discuta-os com seus amiguinhos ○ Aplique os que forem aprovados no seu projeto ○ Documente ● E Documente!
  • 12. Code-Review Code-review é uma das técnicas utilizadas para avaliar a qualidade do código a ser adicionada no projeto. O ideal é que quem desenvolveu a feature, não faça seu próprio code-review. Fatores importantes: ● Não leve a avaliação como algo pessoal ● Não avalie o código de forma pessoal ● Tenha um checklist do que é avaliado no code-review ● Siga o checklist!
  • 13. Code-Review O que deve ser avaliado no code-review: ● A utilização dos padrões adotados ● Performance ● Testes ● Segurança ● Estrutura de dados ● SOLID ● Boiler Plate ● Validações não automatizáveis ● Enfim: TUDO!
  • 15.
  • 16. Testes Testes são uma parte fundamental do desenvolvimento. Somente com testes podemos garantir que uma alteração não afeta o que já foi feito e que um bug corrigido não irá se repetir. Escrevam testes. Por favor!
  • 17. Ferramentas ● Android Lint ● Checkstyle ● FindBugs ● SonarQube
  • 18. Checkstyle O checkstyle é um plugin que se adiciona pelo Gradle que valida pontos de padronização de código java. Alguns pontos que podem ser validados: ● Magic Number ● Nome de método / Variável / Constantes ● Indentação com Tab versus Espaço ● Tamanho da linha ● Espaçamento ● O uso correto de {}.
  • 19. Android Lint Essa é a ferramenta mais simples de se utilizar. 1. Execute o comando no terminal: ./gradlew lint 2. Um relatório .html será gerado no diretório: app/build/outputs O relatório mostra o erro, a gravidade e uma explicação detalhada do erro e como corrigir.
  • 20. Findbugs Identifica código Java que são passíveis de bugs. Algumas categorias de bugs avaliadas: ● Bad Practice ● Malicious code vulnerability ● Multithreaded correctness ● Performance ● Security ● Dodgy code
  • 23. #ComoFaz Basicamente você precisa de um conhecimento básico de Gradle, mas não se desespere a documentação deles é muito simples de ser seguida. :)
  • 24.
  • 25. #Checkstyle Para ativar o checkstyle é necessário criar uma task customizada no gradle:
  • 26. #Checkstyle Agora você precisa configurar o .xml com as regras de validação:
  • 28. Bibliografia ● Android Lint: http://tools.android.com/tips/lint ● Checkstyle: http://checkstyle.sourceforge.net/ ● Findbugs: http://findbugs.sourceforge.net/ ● Google Styleguide: https://google.github.io/styleguide/javaguide.html ● SonarQube: https://www.sonarqube.org/ ● What look for in a Code-Review (e-book gratis) https://leanpub.com/whattolookforinacodereview ● Espresso: https://developer.android.com/training/testing/ui-testing/espresso-testing.html ● Testes no Android com Espresso: http://www.concretesolutions.com.br/2016/09/02/testes-android-espresso-1/ ● Gradle: https://gradle.org/ ● SOLID no Android - Marcello Galhardo: https://www.youtube.com/watch?v=grW2uDOvzeU