code smell gsw

43
Code Smell Mantendo seu código livre de maus cheiros freegoogleslidestemplates.com Pedro HOS

Upload: pedro-henrique

Post on 13-Apr-2017

101 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Code smell   gsw

Code SmellMantendo seu código livre de maus cheiros

freegoogleslidestemplates.com

Pedro HOS

Page 2: Code smell   gsw

Sumário1

2

3

4

5

6

7

8

9

10

A Regra do escoteiro

Como mensurar a qualidade do seu código?

O que é um código sujo?

Nomenclaturas

Métodos

Parâmetros

Comentários

Formatação

Tratamento de erros

Teoria das janelas quebradas.

Page 3: Code smell   gsw

Sumário11

12

Testes

Links

Page 4: Code smell   gsw

Código Limpo:Habilidades Práticas do Agile

Softwarefreegoogleslidestemplates.com

Page 5: Code smell   gsw

Código Limpo - Habilidades Práticas do Agile Software (Robert C. Martin "Uncle Bob")

Page 6: Code smell   gsw

"Qualquer tolo pode escrever código que um computador consiga entender. Bons programadores escrevem código que humanos consigam entender." - Martin Fowler

Page 7: Code smell   gsw

1 Teoria das janelas quebradas

freegoogleslidestemplates.com drauziovarella.com.br/drauzio/janelas-quebradas

Page 8: Code smell   gsw

2 A Regra do escoteiro

freegoogleslidestemplates.com robsoncastilho.com.br/2010/12/03/limpe-seu-codigo/

Page 9: Code smell   gsw

Deixe o acampamento mais limpo do que você encontrou!

Page 10: Code smell   gsw

3 Como mensurar a qualidade do seu código?

freegoogleslidestemplates.com

Page 11: Code smell   gsw
Page 12: Code smell   gsw

4 O que é um código sujo?

freegoogleslidestemplates.com

Page 13: Code smell   gsw

● 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.

Bjarne Stroustrup ( Pai do C++ )

Page 14: Code smell   gsw

● 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);

Dave Tomas ( Criador do Eclipse )

Page 15: Code smell   gsw

5 Nomenclaturasfreegoogleslidestemplates.com

Page 16: Code smell   gsw

Bizu #01 - Sempre que encontrar um nome ruim, mude-o;Use o CTRL + ALT + R no eclipse para isso;

Bizu #02 - Dê nomes que tenham significados.Nada de int i, String x, Date dmahmsegs;

Page 17: Code smell   gsw

Bizu #03 - Evite nomes com mais de um siginificado ou com duplo sentido

String HP (empresa ou Hipotenusa? )

Bizu #04 - Evite nomes muito parecidos XYZControllerForEfficientHandlingOfStringXYZControllerForEfficientStorageOfString

Page 18: Code smell   gsw

Bizu #05 - Dê nomes pronunciáveisDate genymdhmsDate generationTimestamp

Page 19: Code smell   gsw

6 Métodosfreegoogleslidestemplates.com

Page 20: Code smell   gsw

Bizu #06 - Métodos devem ser pequenos, de 20 a 30 linhas no máximo

Bizu #07 - Fazer apenas uma coisa, devem fazê-la bem, devem fazer apenas ela. Use a extração de métodos, classes e interfaces que as IDEs modernas possuem ( CTRL + 1 no eclipse)

Page 21: Code smell   gsw

Bizu #08 - Evite muitos if e else, utilizar padrões de projeto que faça abstração, como Chain of Responsability, Abstract, Factory, etc…

Bizu #09 - Os blocos if, else, while, switch/case devem conter, de preferência, apenas uma linha, sendo ela uma chamada de função.

Page 22: Code smell   gsw

7 Parâmetrosfreegoogleslidestemplates.com

Page 23: Code smell   gsw

Bizu #10 - A quantidade de parâmetros ideal, é ZERO, 0, NULO;

Bizu #11 - Mas ...1. Mônade2. Díade3. Tríades4. Políade (Caso muito especial)

Bizu #12 - Crie objetos para transitar muitos parâmetros

Page 24: Code smell   gsw

8 Comentáriosfreegoogleslidestemplates.com

Page 25: Code smell   gsw

Bizu #13 - Não insira comentários em um código ruim, reescreva-o;

Bizu #14 - Comentários velhos são mentirosos, e o pai da mentira é o ….

Bizu #15 - Geralmente os comentários não são atualizados;

Page 26: Code smell   gsw

Bizu #16 - Código bom é auto-explicativo, não precisa de comentários

Bizu #17 - Ler um código bem escrito, é como ler uma bela poesia;

Page 27: Code smell   gsw

● Legais (Direitos autorais)● Explicativa. Tivemos que fazer isso por causa disso,

foi a melhor maneira que encontramos de fazer isso, etc …

● Alerta sobre consequências. Não usar este teste porque ele gera um relatório real;

● Comentários TODO

Comentários bons

Page 28: Code smell   gsw

● Comentários Redundantes;● Comentários Enganadores;● Comentários Longos;● Código como Comentário● Comentários Ruidosos

○ /*dia do mes */ private int diaDoMes;● Marcadores de posição

○ // ########################○ // ====== Comentário bem ruim ======

Comentários ruins

Page 29: Code smell   gsw

9 Formataçãofreegoogleslidestemplates.com

Page 30: Code smell   gsw

Bizu #18 - Formatação é importante SIM!

Bizu #19 - Entre em acordo com o time de desenvolvimento e definam um padrão

Bizu #20 - Procurem por padrões já estabelecidos, como do Google

Bizu #21 - Metáfora do Jornal;

Page 31: Code smell   gsw

Bizu #22 - No eclipse utilize - CTRL + 3 e digite: Formatter, clique na opção:

Agora você pode editar sua formatação

Page 32: Code smell   gsw

Bizu #23 - 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 33: Code smell   gsw

Tratamento de erros10

Page 34: Code smell   gsw

Bizu #24 - Sempre que possível use Try/Catch;

Bizu #25 - Faça um bom sistema de Logs no seu projeto;

Bizu #26 - Tente cobrir a maior parte do código com testes;

Bizu #27 - Build automatizado/Integração Contínua;

Page 35: Code smell   gsw

5 Testesfreegoogleslidestemplates.com

Page 36: Code smell   gsw

Bizu #28 - Dar nomes de métodos que expressam o que o teste faz;

Bizu #29 - Nomes de Classes de teste igual aos nomes das Classes Testadas com sufixo Test para testes unitário e IT para testes de integração;

Bizu #30 - Mesmo Pacote, SRC diferente;

Page 37: Code smell   gsw

Bizu #31 - Refatore testes;

Bizu #32 - Cada método deve executar apenas uma tarefa;

Bizu #33 - Deve ser simples e independente sempre que possível;

Bizu #34 - Cobertura de testes

Page 38: Code smell   gsw

Links12

Page 39: Code smell   gsw

Bizu #35 - https://bitbucket.org/account/user/gsw-team/projects/GSWOR

Bizu #36 - https://bitbucket.org/gsw-team/wiki/wiki/Home

Bizu #37 - https://bitbucket.org/gsw-team/wiki/wiki/java-style-guide

Bizu #38 - https://google.github.io/styleguide/javaguide.html

Page 40: Code smell   gsw

Bizu #39 - github.com/ryanmcdermott/clean-code-javascript

Bizu #40 - github.com/google/styleguide

Bizu #41 - github.com/johnpapa/angular-styleguide

Page 41: Code smell   gsw

Bizu #42 - infoq.com/br/presentations/clean-code-agile-profissional Bizu #43 - infoq.com/br/articles/clean-code-book-review

Bizu #44 - http://infoq.com/br/presentations/clean-code-para-testers

Page 42: Code smell   gsw

Thank Youfreegoogleslidestemplates.com

Page 43: Code smell   gsw

FGST Free Google Slides Templates