Bad smells no código

20
Bad Smells Bad Smells in Code in Code Lourdilene Souza

Transcript of Bad smells no código

Page 1: Bad smells no código

Bad Smells Bad Smells in Codein Code

Lourdilene Souza

Page 2: Bad smells no código

AgendaAgenda

✔ Bad Smells✔ Alguns tipos de bad smells✔ Exemplo✔ Refatoração

Page 3: Bad smells no código

O que são O que são Bad Smells ?Bad Smells ?

Page 4: Bad smells no código

“Maus cheiros no código são sintomas de má concepção ou implementação de escolhas" [ Martin Fowler ]

Page 5: Bad smells no código

Por que conhecer e Por que conhecer e evitar ?evitar ?

Page 6: Bad smells no código

Compreensão

Page 7: Bad smells no código

Produtividade

Page 8: Bad smells no código

Alguns Alguns Bad SmellsBad Smells

Page 9: Bad smells no código

Code SmellsCode Smells

ComentáriosComentários

"Qualquer pessoa é capaz de escrever código que um computador possa entender. Bons programadores escrevem código que seres humanos podem entender." [Martin Fowler, Refactoring: Improving the Design of Existing Code]

Page 10: Bad smells no código

Code SmellsCode Smells

Muitos parâmetros no MétodoMuitos parâmetros no Método

✔ Aumento da complexidade✔ Encapsular em objeto

Heranças paralelasHeranças paralelas

✔ Hierarquia em um única classe✔ Patterns

Page 11: Bad smells no código

Code SmellsCode Smells

Código duplicadoCódigo duplicado

✔ DRY – Don’t Repeat Yourself!✔ Retrabalho✔ Difícil de manter✔ Pequenas variações

Page 12: Bad smells no código

Code SmellsCode Smells

Complexidade CondicionalComplexidade Condicional✔ Grandes blocos if/else/switch

Tiro de EspingardaTiro de Espingarda

✔ Mudanças em uma classe com impacto em inúmeras outras.

✔ Refatorar para centralizar em uma classe ou usar herança.

Page 13: Bad smells no código

Code SmellsCode Smells

Classe grandeClasse grande

✔ Classes grandes, como métodos longos, são difíceis de ler, compreender e debugar.

✔ Será que a classe tem responsabilidades demais?

✔ A classe grande pode ser reestruturada ou dividida em classes menores?

Page 14: Bad smells no código

Bad Code Smells [Martin Fowler]Bad Code Smells [Martin Fowler]✔ DUPLICATED CODE✔ LONG METHOD✔ LARGE CLASS✔ LONG PARAMETER LIST✔ DIVERGENT CHANGE✔ SHOTGUN SURGERY✔ FEATURE ENVY✔ DATA CLUMPS✔ PRIMITIVE OBSESSION✔ SWITCH STATEMENTS✔ PARALLEL INHERITANCE HIERARCHIES✔ LAZY CLASS✔ SPECULATIVE GENERALITY✔ TEMPORARY FIELD✔ MESSAGE CHAINS✔ MIDDLE MAN✔ INAPPROPRIATE INTIMACY✔ ALTERNATIVE CLASSES WITH DIFFERENT INTERFACES✔ INCOMPLETE LIBRARY CLASS✔ DATA CLASS✔ REFUSED BEQUEST✔ COMMENTS

Page 15: Bad smells no código

Como evitar ?Como evitar ?

✔ Pareamento✔ Code Review✔ Padronização✔ Pensar na manutenção no início do

projeto✔ Qualificação

Page 16: Bad smells no código

Classe grandeClasse grande

Page 17: Bad smells no código

Classe grandeClasse grande

Page 18: Bad smells no código

Classe grandeClasse grande

Page 19: Bad smells no código

ReferênciasReferênciashttp://martinfowler.com/https://sourcemaking.com/

Page 20: Bad smells no código

Ta Safo ?!Ta Safo ?!Obrigada. Obrigada.

http://proex.ufpa.br/PRINCIPAL/ http://lourdilene.blogspot.com.br/