Introdução a Clean
Architecture
Hello World!
Rafael Capuano
Desenvolvedor back-end desde 2011 (há 4 anos
na Praxio)
Um apaixonado por programação, fã de futebol,
movido pelo desafio de viver...
https://medium.com/@rafacapuano
3
Onde tudo começou...
• Hexagonal Architecture (Ports & Adapters)
• Onion Architecture
• Screaming Architecture
• DCI
• BCE
4
• Separação de responsabilidades
• Independência de frameworks, bancos de
dados, UI ou qualquer agente externo
• Redução do custo de mudança
• Código testável
• Facilidade para entender o que o sistema faz
5
6
Clean Architecture ao resgate...
O que é?
7
8
• Popularizado por Robert C. Martin (Uncle Bob)
• Unificação dos conceitos arquiteturais já
existentes
• O sistema é visto como um conjunto de
camadas que interagem seguindo “The
Dependency Rule”
9
“The outer circles are
mechanisms. The inner
circles are policies”
10
Uncle Bob
“This rule (The
Dependency Rule) says
that source code
dependencies can only
point inwards”
11
Entities
12
• Conceito existente no DDD (Domain Driven
Design)
• Representam os objetos do domínio
• São conduzidas pelo negócio, nunca por
frameworks
13
Use Case
14
• Descrevem o que o sistema faz
• Concentram as regras de negócio da aplicação
• Definido como um conjunto de etapas
(interações) para se alcançar o objetivo
• Ao escrever as classes, devemos dar atenção
ao Single Responsability Principle do SOLID
15
Interface Adapters
16
• Converte dados do Use Case para agentes
externos (como a Web, por exemplo) e vice-
versa
• Composto por componentes MVC já
conhecidos, como Controllers e Views, e os
Repositórios para acesso ao banco de dados
• O código deve ser o mais simples possível, sem
lógica de negócio
17
Frameworks &
Drivers
18
• É a composição dos agentes externos
(detalhes), como Web, banco de dados e
frameworks
• Não devem influenciar os modelos de negócio
19
20
Dependency Inversion
• A comunicação entre
as camadas deve se
dar por abstrações
(interfaces)
Data Transfer Objects
• Dados devem ser
transferidos entre as
camadas no modelo
adequado para elas
21
Não existe bala de prata;
Como qualquer conceito, você
pode adaptá-lo à sua realidade,
mas cuidado para não que
quebrar o princípio de
independência entre as camadas
do seu projeto.
Na dúvida, siga o SOLID, converse
com o time e acredite em você!
22
23
Dúvidas?
• Aplicando clean architecture no back-end
• Aplicando clean architecture no front-end
24
http://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
https://blog.ndepend.com/introduction-clean-architecture/
https://proandroiddev.com/clean-architecture-data-flow-dependency-rule-
615ffdd79e29
https://www.freecodecamp.org/news/a-quick-introduction-to-clean-architecture-
990c014448d2/
http://www.plainionist.net/Implementing-Clean-Architecture-UseCases/
25
26
Por enquanto é só...
Obrigado!

Introducao a Clean Architecture