Seu App a prova de gambiarras (ou não)
Ferramentas de validação de código
Christiane MoraisAndroid 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
-Rev
iew 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
-Rev
iew 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
CheckstyleO 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 lint2. 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.
FindbugsIdentifica 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
Bibl
iogr
afia ● 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