O documento discute padrões de projeto como Factory, Command e Null Object para refatorar códigos com cheiros ruins. Ele explica o que são esses padrões, como aplicá-los para resolver problemas comuns e as vantagens e desvantagens de cada um. O documento também fornece exemplos de código para ilustrar a aplicação dos padrões.
2. Cronograma
- Code Smells
- O que são patterns
- Factory (Headfirst)
- Command (Headfirst)
- Null Object (Headfirst)
- Conclusão
- Todos os patterns acima em problemas reais
4. Code Smells
- Duplicated Code
- Long Method
- Conditional Complexity
- Primitive Obsession
- Indecent Exposure
- Shotgun Surgery
- Large Class
5. Duplicated Code
- O pior tipo de smell
- Pode estar explícito ou implícito no código
- Kent Beck
- SRP (Single Responsibility Principle)
6. Long Method
- Por que os métodos devem ser pequenos ?
- Legibilidade
- Fácil extensão
- Mantém o código simples e evita duplicação
- Métodos podem compartilhar a mesma lógica
- Fácil testar
8. Primitive Obsession
- Uso excessivo de valores primitivos
- Tipo não seguro (Entidades)
- Classes de dinheiro != double
- String
9. Shotgun Surgery
- Uma feature n classes
- Várias pequenas mudanças
- Alexandre Freire
10. Indecent Exposure
- Exposição de métodos que não são
importantes ou são mas de maneira indireta
- Aumenta complexidade do código
- Fabrica.getFuncionarios().getChefes().
getSubordinados().getNome();
15. Factory
Trade off
+ Consolida a lógica de criação e configuração de
preferências
+ Desacopla o cliente da lógica de criação
-Complica o design onde uma simples instância seria
suficiente
21. Command
TradeOff
+ Mecanismo simples de executar vários
comportamentos diferentes de uma maneira uniforme
+ Permite mudança em tempo de execução mudar
quem vai ser executado e como
+ Código simples de implementar
- Complica um design onde um if seria suficiente
22. Null Object
E se não tivermos funções suficientes para
todos os botões do nosso controle ?
26. Null Object
Trade off
+ Previne null pointer
+ Simplifica o código minimizando verificação de nulo
- Complica o design que algumas verificações resolveriam
27. Conclusão
- Não é chato como GOF
- Divertido de ler, principalmente se você codar
junto
- Não é para decorar