- Código modular
- Código reutilizável (D.R.Y - Don't repeat yourself)
- Código testável, baixo acoplamento
- Baixo acoplamento e alta coesão
- Código expansível
- Separations of concerns (Separação de conceitos)
- Fácil manutenção
- Complexidade
- Quantidade de código digitado aumenta
- Tempo de desenvolvimento aumenta bastante
- Tenha cuidados com: YAGNI, KISS (You aren't gonna need it, Keep it simple, stupid!)