Bad Smells Bad Smells in Code in Code Lourdilene Souza
Bad Smells Bad Smells in Codein Code
Lourdilene Souza
AgendaAgenda
✔ Bad Smells✔ Alguns tipos de bad smells✔ Exemplo✔ Refatoração
O que são O 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 e Por que conhecer e evitar ?evitar ?
Compreensão
Produtividade
Alguns Alguns 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ênciashttp://martinfowler.com/https://sourcemaking.com/
Ta Safo ?!Ta Safo ?!Obrigada. Obrigada.
http://proex.ufpa.br/PRINCIPAL/ http://lourdilene.blogspot.com.br/