SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
15/02/2019 Arquitetura limpa
http://localhost:8000/?print-pdf 1/15
ARQUITETURA LIMPAARQUITETURA LIMPA
Como separar regras de negócios estáveis
de detalhes técnicos voláteis
ARQUITETURA LIMPA
 
15/02/2019 Arquitetura limpa
http://localhost:8000/?print-pdf 2/15
INÍCIO DE PROJETOINÍCIO DE PROJETO
Programador ninja
ARQUITETURA LIMPA
 
15/02/2019 Arquitetura limpa
http://localhost:8000/?print-pdf 3/15
"Precisamos entregar logo!
Não precisa testar!
Depois agente volta e arruma ;)"
Timão
ARQUITETURA LIMPA
 
15/02/2019 Arquitetura limpa
http://localhost:8000/?print-pdf 4/15
METADE DO PROJETOMETADE DO PROJETO
Programador arretado
ARQUITETURA LIMPA
 
15/02/2019 Arquitetura limpa
http://localhost:8000/?print-pdf 5/15
"O fato é que fazer bagunças
é sempre mais devagar
que continuar limpo."
Uncle Bob
ARQUITETURA LIMPA
 
15/02/2019 Arquitetura limpa
http://localhost:8000/?print-pdf 6/15
ARQUITETURAARQUITETURA
ARQUITETURA LIMPA
 
15/02/2019 Arquitetura limpa
http://localhost:8000/?print-pdf 7/15
"É a forma dada por quem o constrói com o objetivo de
facilitar o desenvolvimento, a implantação, a operação
e a manutenção.
Deixando tantas opções quanto possível, pelo maior
tempo possível."
Yannick Grenzinger
ARQUITETURA LIMPA
 
15/02/2019 Arquitetura limpa
http://localhost:8000/?print-pdf 8/15
VANTAGENSVANTAGENS
Independência
Interface do
usuário
Frameworks
Banco de dados
Testabilidade
ARQUITETURA LIMPA
 
15/02/2019 Arquitetura limpa
http://localhost:8000/?print-pdf 9/15
ARQUITETURA LIMPAARQUITETURA LIMPA
O melhor dos mundos
Uncle Bob
ARQUITETURA LIMPA
 
15/02/2019 Arquitetura limpa
http://localhost:8000/?print-pdf 10/15
ENTIDADESENTIDADES
O que o sistema é
class Produto {
constructor(
private descricao: string,
private preco: number
) {}
/** getters and setters */
}
ARQUITETURA LIMPA
 
15/02/2019 Arquitetura limpa
http://localhost:8000/?print-pdf 11/15
CASOS DE USOCASOS DE USO
O que o sistema faz
class CriarProduto {
constructor(readonly r: IProdutoRepositorio) {}
criar(descricao: string, preco: number): void {
const p = new Produto(descricao, preco);
this.r.persistir(p);
}
}
ARQUITETURA LIMPA
 
15/02/2019 Arquitetura limpa
http://localhost:8000/?print-pdf 12/15
ADAPTADORESADAPTADORES
Converte dados internos em externos, e vice-versa
class EmMemoriaProdutoRepos implements IProdutoRepositorio {
private produtos: Produto[] = [];
persistir(p: Produto): void {
this.produtos[] = p;
}
}
router.post('/produtos', (req: Request, res: Response) => {
criarProduto.criar(req.body.descricao, req.body.preco);
res.status(201).end();
});
ARQUITETURA LIMPA
 
15/02/2019 Arquitetura limpa
http://localhost:8000/?print-pdf 13/15
FRAMEWORKS E DRIVERSFRAMEWORKS E DRIVERS
Mundo externo (detalhes)
ARQUITETURA LIMPA
 
15/02/2019 Arquitetura limpa
http://localhost:8000/?print-pdf 14/15
RESPEITE AS FRONTEIRASRESPEITE AS FRONTEIRAS
ARQUITETURA LIMPA
 
15/02/2019 Arquitetura limpa
http://localhost:8000/?print-pdf 15/15
"O único jeito de ir rápido,
é fazendo direitinho."
Uncle Bob
ARQUITETURA LIMPA
  

Mais conteúdo relacionado

Mais procurados

Jakarta EE 9 と これから
Jakarta EE 9 と これからJakarta EE 9 と これから
Jakarta EE 9 と これからKenji Kazumura
 
AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -SORACOM, INC
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 
Rails技術者認定試験対策 合格への最短経路
Rails技術者認定試験対策 合格への最短経路Rails技術者認定試験対策 合格への最短経路
Rails技術者認定試験対策 合格への最短経路DIVE INTO CODE Corp.
 
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open APIRESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open APIKohei Saito
 
Clean Architecture em PHP
Clean Architecture em PHPClean Architecture em PHP
Clean Architecture em PHPElton Minetto
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツpospome
 
実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターンHiroyasu Suzuki
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)Jay Park
 
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 (  Redmine of one plant 2022 ...ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 (  Redmine of one plant 2022 ...
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...Kohei Nakamura
 
DI(依存性注入)について
DI(依存性注入)についてDI(依存性注入)について
DI(依存性注入)についてYui Ito
 
SlideShareをやめて SpeakerDeckに移行します
SlideShareをやめて SpeakerDeckに移行しますSlideShareをやめて SpeakerDeckに移行します
SlideShareをやめて SpeakerDeckに移行しますMamoru Ohashi
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean ArchitectureFlavius Stef
 
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)NTT DATA Technology & Innovation
 
Workshop Prototipação em ux - Como validar uma ideia sem construir o produto
Workshop Prototipação em ux - Como validar uma ideia sem construir o produtoWorkshop Prototipação em ux - Como validar uma ideia sem construir o produto
Workshop Prototipação em ux - Como validar uma ideia sem construir o produtoCarla De Bona
 

Mais procurados (20)

Jakarta EE 9 と これから
Jakarta EE 9 と これからJakarta EE 9 と これから
Jakarta EE 9 と これから
 
AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Jenkins with Docker
Jenkins with DockerJenkins with Docker
Jenkins with Docker
 
Rails技術者認定試験対策 合格への最短経路
Rails技術者認定試験対策 合格への最短経路Rails技術者認定試験対策 合格への最短経路
Rails技術者認定試験対策 合格への最短経路
 
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open APIRESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
 
Clean Architecture em PHP
Clean Architecture em PHPClean Architecture em PHP
Clean Architecture em PHP
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツ
 
Introdução React.js
Introdução React.jsIntrodução React.js
Introdução React.js
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)
 
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 (  Redmine of one plant 2022 ...ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 (  Redmine of one plant 2022 ...
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...
 
DI(依存性注入)について
DI(依存性注入)についてDI(依存性注入)について
DI(依存性注入)について
 
SlideShareをやめて SpeakerDeckに移行します
SlideShareをやめて SpeakerDeckに移行しますSlideShareをやめて SpeakerDeckに移行します
SlideShareをやめて SpeakerDeckに移行します
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
 
Workshop Prototipação em ux - Como validar uma ideia sem construir o produto
Workshop Prototipação em ux - Como validar uma ideia sem construir o produtoWorkshop Prototipação em ux - Como validar uma ideia sem construir o produto
Workshop Prototipação em ux - Como validar uma ideia sem construir o produto
 
RESTful API 入門
RESTful API 入門RESTful API 入門
RESTful API 入門
 

Arquitetura Limpa Princípios