9. 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]
10. 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
12. 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.
13. 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?
14. 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
15. Como evitar ?Como evitar ?
✔ Pareamento
✔ Code Review
✔ Padronização
✔ Pensar na manutenção no início do
projeto
✔ Qualificação