Bad SmellsBad Smells
in Codein Code
Lourdilene Souza
AgendaAgenda
✔ Bad Smells
✔ Alguns tipos de bad smells
✔ Exemplo
✔ Refatoração
O que sãoO que são
Bad Smells ?Bad Smells ?
“Maus cheiros no código são sintomas de má
concepção ou implementação de escolhas" [ Martin
Fowler ]
Por que conhecer ePor que conhecer e
evitar ?evitar ?
Compreensão
Produtividade
AlgunsAlguns Bad SmellsBad Smells
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]
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
Code SmellsCode Smells
Código duplicadoCódigo duplicado
✔ DRY – Don’t Repeat Yourself!
✔ Retrabalho
✔ Difícil de manter
✔ Pequenas variações
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.
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?
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
Como evitar ?Como evitar ?
✔ Pareamento
✔ Code Review
✔ Padronização
✔ Pensar na manutenção no início do
projeto
✔ Qualificação
Classe grandeClasse grande
Classe grandeClasse grande
Classe grandeClasse grande
ReferênciasReferências
http://martinfowler.com/
https://sourcemaking.com/
Ta Safo ?!Ta Safo ?!
Obrigada.Obrigada.
http://proex.ufpa.br/PRINCIPAL/ http://lourdilene.blogspot.com.br/

Bad smells no código