O documento discute técnicas e ferramentas para melhorar a qualidade do código Android, incluindo pair programming, code review, checkstyle, PMD e Lint. Ele explica como configurar e usar essas ferramentas no Android Studio para identificar problemas de código e padronizar o estilo.
5. Pair programming
#tecnicas
Dois desenvolvedores trabalhando na mesma tarefa
Ambos com o mesmo objetivo
Ambos com diferente conhecimento
Um executa a tarefa (driver)
O outro observa e ajuda de uma forma mais macro (navigator)
5
8. Vale a pena fazer pair programming?
#tecnicas
Dois desenvolvedores fazendo o trabalho de um desenvolvedor
Um desenvolvedor Junior irá diminuir a velocidade do desenvolvedor Sênior
Menos trabalho pronto ao mesmo tempo
Porque colocar dois desenvolvedores fazendo o trabalho de um?
8
9. Ganhos do pair programming
#tecnicas
Minimizar falhas de código e de fluxo
Manutenibilidade
Confiança do código
Amadurecimento mútuo
Compartilhar conhecimento
Aumento de atenção/concentração
9
15. Code review
#tecnicas
Um ou mais membros da equipe devem aprovar o código gerado
Feito através de ferramentas
Previne adicionar bugs
Disseminar conhecimento entre a equipe
Garantir código legível para todos
Garantir código familiarizado para todos
15
17. Como funciona code review
#tecnicas
Código em
review
Código
aprovado
Código
integrado
Código
gerado
Comentário
em review
17
18. Code review no Gerrit
#tecnicas
0
-1
+1
+2
Não está OK. Por favor, olhe meus comentários
Código enviado. Por favor, revisem
Está OK, mas prefiro que mais alguém confirme
Está OK, aprovado!
18
21. Quebrar métodos para melhor leitura
#tecnicas
private void findJonSnow(List<Person> persons) {
for (Person person : persons) {
if (person.getHouse().getName().equals("Stark")) {
if (person.isAlive()) {
if (person.getName().equals("Jon Snow")) {
Log.i(TAG, "Jon Snow was founded!");
}
}
}
}
}
21
22. Comentários mais compreensiveis
#tecnicas
private boolean isAlive(Person person) {
// Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
// eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
// ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
// aliquip ex ea commodo consequat. Duis aute irure dolor in
// reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
// pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
// culpa qui officia deserunt mollit anim id est laborum
return person.isAlive();
}
22
23. JavaDoc auto-explicativo
#tecnicas
/**
* Returns if the person is alive.
*
* @param person Person to check if is alive.
* @return <code>true</code> if is alive. <code>false</code> otherwise.
*/
private boolean isAlive(Person person) {
return person.isAlive();
}
23
32. #ferramentas
Manter padrão estético do código
Deixar a equipe confortável com o código
O código é da equipe
Valida se o código mantem o padrão Java
Plugin está no Android Studio, porém desabilitado
32
47. #ferramentas
public void allAlive(List<Person > pers) {
for (Person person : pers)
if (person.isAlive()) {
Log.i(TAG, "Person is alive!");
} else {
}
}
/**
* Print if anyone is alive.
*/
public void allAlive(List<Person> pers) {
for (Person person : pers) {
if (person.isAlive()) {
Log.i(TAG, "Person is alive!");
}
}
}
47
51. #ferramentas
“Pretty Much Done” ou “Project Meets Deadline”
Inspeciona o código escrito procurando possíveis bugs
Código desnecessário, com muita complexidade ou confuso, tamanho de
declarações, mal uso de memória e processamento, etc
Plugin está no Android Studio, porém desabilitado
51
62. #ferramentas
Similar ao PMD, porém atua direto no bytecode
Além de bugs busca potenciais problemas de segurança
Plugin está no Android Studio, porém desabilitado
62
76. #ferramentas
Analisa todo o projeto, não só o código
Possíveis bugs, resources não utilizados, segurança e performance
Checagens tem prioridade, gravidade e categoria
Plugin está no Android Studio, porém desabilitado
Lint
76