O documento discute como melhorar a qualidade do código através de boas práticas como SOLID e código limpo. Isso melhora a manutenibilidade ao tornar o código mais fácil de compreender e corrigir bugs. Comentários devem ser usados com moderação para explicar partes complexas em vez de repetir o código.
Princípios de Programação Orientada a Objetos Solid, dry e kiss
Como melhorar o código e aplicar princípios SOLID
1. De Freddy Krueger à Brad Pitt.
Como melhorar o seu código e fazê-lo ficar lindo
2. Analista de Desenvolvimento no SERPRO &
ex-Analista de Infra & @rubyonrio &
@hackinrio & WTM & curiosa & hiperativa &
tentando dominar o mundo
Quem sou eu?
3. O que vamos ver?
• SOLID (Boas práticas)
• Código Limpo
4. O que vamos ver?
• SOLID (Boas práticas)
• Código Limpo
5. Tá mas porque isso é
importante?
● Mais fácil para compreender
● Mais fácil de encontrar e resolver bugs
Ou seja, melhora (e muito) a MANTENABILIDADE
do código
6.
7. O que contribui para um código
feio?
Eu quero é terminar rápido!!!
Pra que fazer direito? Tô de saco cheio desse
projeto já!
Tenho que começar a fazer agora!!!
Depois refatoro!
Todo mundo faz assim!!!
8. O que contribui para um código
feio?
Eu quero é terminar rápido!!!
Pra que fazer direito? Tô de saco cheio desse
projeto já!
Tenho que começar a fazer agora!!!
Depois refatoro!
Todo mundo faz assim!!!
9. Porque o código continua feio?
● Desenvolvedores saem do projeto
● Novos desenvolvedores entram no projeto e
tem medo de modificar algo
● Mito de que demora muito mais tempo
14. O código deve ser o máximo possível
auto-explicativo
Comentários podem e devem ser
usados, mas principalmente nas
seguintes condições:
● Se não dá pra fazer nada melhor.
● Para alertar sobre algo importante sobre
aquele trecho de código.
● TODO / FIXME
20. Single Responsibility
Cada classe ou método deve ter apenas uma
responsabilidade, ou seja, mudar por apenas
um motivo
Objetivo:
● Classes ou métodos pequenas e coesas e
fracamente acopladas
23. Open-Closed
As classes devem ser abertas para extensão,
mas fechadas para modificação.
Objetivos:
● Evolução do código mais fácil e rápida
● Melhorar a testabilidade
25. Liskov Substitution
Uma classe pode ser substituída por uma
classe derivada dela sem a alteração de
funcionamento de um método.
26. Liskov Substitution
Uma classe pode ser substituída por uma
classe derivada dela sem a alteração de
funcionamento de um método.
Objetivos:
● Reaproveitamento de código mais eficiente
● Melhorar a testabilidade
30. Interface Segregation
O cliente de uma classe não deve ser
obrigado a herdar métodos que ele não
utiliza.
Objetivo:
● Interfaces menores, mais coesas e mais
estáveis
32. Dependency Inversion
Módulos de alto nível não devem depender de
módulos de baixo nível e sim de abstrações e
estas não devem depender de detalhes e sim
os detalhes dependerem delas.
33. Dependency Inversion
Módulos de alto nível não devem depender de
módulos de baixo nível e sim de abstrações e
estas não devem depender de detalhes e sim
os detalhes dependerem delas.
Objetivos:
● Diminuir o acoplamento entre os diferentes
módulos
● Aumentar o reuso de classes