refatoração: como deixar seu código livre de maus cheiros
TRANSCRIPT
![Page 1: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/1.jpg)
Refatoração: Mantendo o código livre de maus
cheirosCode Smell
Pedro H.O.Silvapedrohosilva.wordpress.com/
![Page 2: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/2.jpg)
Quem é você?
Não sou esses caras
![Page 3: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/3.jpg)
Quem é você?
![Page 4: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/4.jpg)
Uai, má o que c vai fala, sô?
Robert C. Martin - "Uncle Bob"
![Page 5: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/5.jpg)
Mas Primeiro: Teoria das Janelas Quebradas
Em 1982 pelos americanos James Wilson e George Kellinghttp://drauziovarella.com.br/drauzio/janelas-quebradas/
![Page 6: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/6.jpg)
Que Diabos/Minuto
Segundo "Uncle Bob", a unidade de medida para um código é Que
Diabos/minuto !
![Page 7: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/7.jpg)
Afinal, o que é um código SUJO?!
![Page 8: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/8.jpg)
Afinal, o que é um código SUJO?!Bjarne Stroustrup ( Pai do C++ )
● A lógica deve ser direta, para dificultar o encobrimento de bugs;
● Dependências mínimas;
● Tratamento de erro;
● O Código limpo, faz bem apenas uma coisa, executa apenas uma tarefa.
![Page 9: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/9.jpg)
Dave Tomas ( Criador do Eclipse )
● O código limpo tem testes de uma forma geral, como unitários, integração, aceitação etc.
● Nome significativos (nada de “int i;”);
● Poucas dependências e fazer apenas uma tarefa (como citado por Bjarne);
![Page 10: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/10.jpg)
Dando nome aos Bois!
Nomeando as coisas ( Classes, Métodos, Variáveis, etc… )
Bizu #01 - Sempre que encontrar um nome ruim, mude-o ( CTRL + ALT + R );
Bizu #02 - Dê nomes que tenham dignificados, nada de: int i, String x, Date dmahmsegs;
![Page 11: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/11.jpg)
Dando nome aos Bois!
Bizu #03 - Evite nomes com mais de um siginificado ou com duplo sentido,
Ex:. HP empresa ou Hipotenusa? ;
Bizu #04 - Evite nomes muito parecidos, Ex:.
XYZControllerForEfficientHandlingOfStringXYZControllerForEfficientStorageOfString
![Page 12: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/12.jpg)
Dando nome aos Bois!
Bizu #05 - Dê nomes pronunciáveis, EX:.genymdhms ou generationTimestamp?
![Page 13: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/13.jpg)
Padrão SUN: Classes
● Substantivos;● Primeira Letra Maiúscula;● Para Palavras Compostas, usar o CamelCase;
Ex:. Dog, ServicoPagamentoCompleto ...
![Page 14: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/14.jpg)
Padrão SUN: Interfaces
● Primeira Letra Maiúscula;● Para Palavras Compostas, usar o CamelCase;● Alguns usam IDAO e DAO● Alguns usam DAO e DAOImpl● Sempre que possível usar nomes mais que
mostrem seu propósito, como por exemplo List e ArrayList, no JAVA
Ex:. DAO, IDAO, DAO, DAOIml...
![Page 15: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/15.jpg)
Padrão SUN: Métodos
● Primeira Letra Minuscula;● Para Palavras Compostas, usar o CamelCase,
mas sempre manter a primeira minuscula;● Verbo-Substantivo
Ex:. getNome, setIdade, somarSalarios ...
![Page 16: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/16.jpg)
Padrão SUN: Variáveis
● Primeira Letra Minuscula;● Para Palavras Compostas, usar o CamelCase,
mas sempre manter a primeira minuscula;● Nomes significativos;● Nomes Pequenos, sempre que possível
Ex:. nome, idade, enderecoEntrega ...
![Page 17: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/17.jpg)
Padrão SUN: Constantes
● Marcados como Final e Static;● Todas letras maiúsculas;● Palavras Compostas, separar por
UnderScore ( _ )
Ex:. static final ENVIA_POR_ARQUIVO
![Page 18: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/18.jpg)
Testes
● Mesmo padrão citado nos casos anteriores, mas para as classes é padrão acrescentar o sufixo Test, e também manter o mesmo nome de pacote, porem em uma src diferente.
Ex:. GeraArquivoTest.class
![Page 19: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/19.jpg)
Métodos
● Pequenos, de 20 a 30 linhas ( eu já vi métodos com mais de 1000 linhas);
● Fazer apenas uma coisa, devem fazê-la bem, devem fazer apenas ela;
Bizu #06 - Use a extração de métodos, classes e interfaces que as IDEs modernas possuem ( CTRL + 1 )
![Page 20: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/20.jpg)
Métodos
● Evite muitos Ifs e Elses, utilizar padrões de projeto que faça abstração, como Chain of Responsability, Abstract, Factory, etc…
● Os blocos if, else, while, switch/case devem conter, de preferência, apenas uma linha, sendo ela uma chamada de função;
![Page 21: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/21.jpg)
Métodos: Parâmetros
● A quantidade de parâmetros ideal, é ZERO, 0, NULO;
● Mas…○ Mônade;○ Díade;○ Tríades;○ Políade (Caso muito especial)
● Para evitar isso utilize objetos;
![Page 22: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/22.jpg)
Métodos
● Evite Repetição de Código
![Page 23: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/23.jpg)
Comentários
![Page 24: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/24.jpg)
Comentários
● Não insira comentários em um código ruim, reescreva-o;
● Comentários velhos são mentirosos, e o pai da mentira é o ….
● Geralmente os comentários não são atualizados;
![Page 25: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/25.jpg)
Comentários
● Código bom é auto-explicativo, não precisa de comentários
● Ler um código bem escrito, é como ler uma bela poesia;
![Page 26: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/26.jpg)
Comentários Bons
● Legais (Direitos autorais)
● Explicativa, tivemos que fazer isso por causa disso, foi a melhor maneira que encontramos de fazer isso, etc …
● Alerta sobre consequencias Ex:. Não usar este teste porque ele gera um relatório real;
● Comentários TODO
![Page 27: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/27.jpg)
Comentários Ruins
● Comentários Redundantes;● Comentários Enganadores;● Comentários Imperativos ( @Param do
javadoc )● Comentários Longos;● Comentários Ruidosos
Ex:. /*dia do mes */ private int diaDoMes;● Marcadores de posição
Ex:. // ########################
![Page 28: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/28.jpg)
Formatação
● Formatação é importante SIM!
● Entre em acordo com o time de desenvolvimento e definam um padrão;
● Procurem por padrões já estabelecidos;
● Metáfora do Jornal;
![Page 29: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/29.jpg)
Formatação: Bizus
Bizu #07 - No eclipse utilize - CTRL + 3 e digite: Formatter, clique na opção:
Agora você pode editar sua formatação ;D
![Page 30: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/30.jpg)
Formatação: Bizus
Bizu #08 - No eclipse utilize - CTRL + 3 e digite: Save Actions, clique em:
Agora você pode habilitar a ação que toda vez que o documento é salvo ele formata o código.
OBS:. Com o Save Actions é possível configurar vários combos ;D
![Page 31: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/31.jpg)
Tratamento de Erros
● Sempre que possível use Try/Catch;
● Faça um bom sistema de Logs no seu projeto;
● Tente cobrir a maior parte do código com testes;
● Build automatizado/Integração Contínua;
![Page 32: Refatoração: Como deixar seu código livre de maus Cheiros](https://reader033.vdocuments.site/reader033/viewer/2022060115/55799b76d8b42ae72b8b52e2/html5/thumbnails/32.jpg)
DUVIDAS?
Blog: pedrohosilva.wordpress.com
Facebook: /pedrohenrique.silva.106
E-mail: [email protected]
BitBucket: bitbucket.org/pedrosjcampos