SlideShare uma empresa Scribd logo
DESIGN PATTERNS COM
JAVASCRIPT
FABIO MIRANDA
FABIO MIRANDA GONÇALVES
SOFTWARE ENGINEER NO MERCADO LIVRE
BACHAREL EM SISTEMAS DE INFORMAÇÃO PELA USJT
DESENVOLVEDOR DESDE 2008
@FABIOMIRGO
fabio.mirgo@gmail.com
DESIGN PATTERN COM JAVASCRIPT
DESIGN PATTERN COM JAVASCRIPT
DESIGN PATTERN ??
DESIGN PATTERN COM JAVASCRIPT
DESIGN PATTERN ??
"Em Engenharia de Software, um Design Pattern
é uma solução geral, reutilizável para um
problema comum, em um determinado
contexto no design de software."
Wikipedia
UMA MELHOR DEFINIÇÃO
DESIGN PATTERN COM JAVASCRIPT
▸ Pense em Design Patterns como receitas de bolo.
▸ Cada receita é uma forma padrão que você tem que
desenvolver (seguir a receita, escrever código como a
receita pede)
▸ Existem várias formas, e cada forma tem um nome.
▸ Cada forma resolve melhor um tipo de problema.
▸ Essa forma funciona tão bem, que ela acaba sendo uma
solução geral e reutilizável.
POR QUE USAR ?
DESIGN PATTERN COM JAVASCRIPT
▸ É uma solução geral para um tipo de problema.
▸ É reutilizável.
▸ Código mais limpo.
▸ Código mais organizado.
▸ Menor complexidade para o seu código (tem padrão).
DESIGN PATTERN COM JAVASCRIPT
QUANDO USAR ?
▸ Para usar, é necessário primeiro enxergar problemas que se
repetem.
▸ Ao enxergar um problema que se repete, deve-se buscar
qual o Design Pattern mais adequado para solucionar esse
problema, ou seja, qual a melhor forma.
▸ Seu projeto inteiro não é um problema que se repete
▸ Não use demasiadamente.
▸ Faça um trade-off, refactors futuros tem um custo maior.
FRAMEWORKS E DESIGN PATTERNS
DESIGN PATTERN COM JAVASCRIPT
MAS AGORA TEM FRAMEWORK, NÃO PRECISA DE DESIGN PATTERN.
CERTO ? ERRADO !
EXEMPLO PRÁTICO - ENVIO DE REMESSA PARA O BANCO
DESIGN PATTERN COM JAVASCRIPT
DESIGN PATTERN COM JAVASCRIPT
PROBLEMA
BACKEND FRONTEND
Envio de
remessa
DESIGN PATTERN COM JAVASCRIPT
PROBLEMA
BACKEND FRONTEND
Envio de
remessa
DESIGN PATTERN COM JAVASCRIPT
PROBLEMA
BACKEND FRONTEND
Envio de
remessa
DESIGN PATTERN COM JAVASCRIPT
PROBLEMA
BACKEND FRONTEND
Envio de
remessa
DESIGN PATTERN COM JAVASCRIPT
PROBLEMA
BACKEND FRONTEND
Envio de
remessa
n
…
…
CODE SMELL
DESIGN PATTERN COM JAVASCRIPT
DESIGN PATTERN COM JAVASCRIPT
CÓDIGO VESPEIRO - NINGUÉM QUER POR A MÃO
STRATEGY - O DESIGN PATTERN ESCOLHIDO
DESIGN PATTERN COM JAVASCRIPT
"definir uma família de algoritmos, encapsular cada
uma delas e torná-las intercambiáveis. Strategy
permite que o algoritmo varie independentemente dos
clientes que o utilizam” (livro GoF)
CODE TIME
DESIGN PATTERN COM JAVASCRIPT
MERCADO LIVRE - TEMOS VAGAS
DESIGN PATTERN COM JAVASCRIPT
▸ Backend pleno e Senior - [DevBE]
▸ Frontend pleno e Senior - [DevFE]
▸ Desenvolvedor Android - [DevAnd]
▸ Desenvolvedor iOS - [DeviOS]
▸ Analista de Infra/Suporte - [AnaInfra]
▸ Mais detalhes:  https://jobs.mercadolibre.com/
▸ Enviar CV para: meire.monte@mercadolivre.com

Mais conteúdo relacionado

Semelhante a Design patterns js

Database Refactoring- Manoel Pimentel
Database Refactoring-  Manoel PimentelDatabase Refactoring-  Manoel Pimentel
Database Refactoring- Manoel Pimentel
Manoel Pimentel Medeiros
 
Workshop Briefing
Workshop BriefingWorkshop Briefing
Workshop Briefing
Rae MP
 
Service Builder - Orange Founders
Service Builder - Orange FoundersService Builder - Orange Founders
Service Builder - Orange Founders
FCamara_Consultoria
 
Webinar Project Builder PM CANVAS
Webinar Project Builder PM CANVASWebinar Project Builder PM CANVAS
Webinar Project Builder PM CANVAS
Project Builder
 
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceEncontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
Carolina Karklis
 
Introdução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webIntrodução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações web
Rodrigo Branas
 
Notification e result pattern
Notification e result patternNotification e result pattern
Notification e result pattern
Ana Manzan
 
Briefing - Workshop
Briefing - WorkshopBriefing - Workshop
Briefing - Workshop
Andreza Fernandez
 
Design System: Dominando o Design at Scale
Design System: Dominando o Design at ScaleDesign System: Dominando o Design at Scale
Design System: Dominando o Design at Scale
Guilherme Gonzalez
 
DESIGNER E FRONT-END DEV: Prontos para mudar seu workflow?
DESIGNER E FRONT-END DEV: Prontos para mudar seu workflow?DESIGNER E FRONT-END DEV: Prontos para mudar seu workflow?
DESIGNER E FRONT-END DEV: Prontos para mudar seu workflow?
RC Comunicação
 
Seminários V - Ads -UNOPAR ARAGUAINA,TO - POLO II
Seminários V - Ads -UNOPAR ARAGUAINA,TO - POLO IISeminários V - Ads -UNOPAR ARAGUAINA,TO - POLO II
Seminários V - Ads -UNOPAR ARAGUAINA,TO - POLO II
Dheimyson Carlos Sousa Silva
 
Prototipagem e MVP para startups
Prototipagem e MVP para startupsPrototipagem e MVP para startups
Prototipagem e MVP para startups
Jennifer Payne
 
Metodologias ágeis com legos
Metodologias ágeis com legosMetodologias ágeis com legos
Metodologias ágeis com legos
Felipe Barreiros
 
Profissão programador práticas para melhoria contínua fatec pg setembro 2013
Profissão programador práticas para melhoria contínua fatec pg setembro 2013Profissão programador práticas para melhoria contínua fatec pg setembro 2013
Profissão programador práticas para melhoria contínua fatec pg setembro 2013
Gabriel Rubens
 
Fisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmoFisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmo
Gustavo Neves
 
Palestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnitPalestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnit
Paulo César M Jeveaux
 
PMCanvas oque e para que serve 10.05.pptx
PMCanvas oque e para que serve  10.05.pptxPMCanvas oque e para que serve  10.05.pptx
PMCanvas oque e para que serve 10.05.pptx
0000998206
 
Programacao Extrema
Programacao ExtremaProgramacao Extrema
Programacao Extrema
Robson Silva Espig
 
Agile Brazil 2012 - Padrões Para Implantar Métodos Ágeis
Agile Brazil 2012 - Padrões Para Implantar Métodos ÁgeisAgile Brazil 2012 - Padrões Para Implantar Métodos Ágeis
Agile Brazil 2012 - Padrões Para Implantar Métodos Ágeis
Suelen Carvalho
 
Mensurando a Experiência do Usuário ( A Importância dos Dados Para UX ) - ...
Mensurando a Experiência do Usuário ( A Importância dos Dados Para UX ) - ...Mensurando a Experiência do Usuário ( A Importância dos Dados Para UX ) - ...
Mensurando a Experiência do Usuário ( A Importância dos Dados Para UX ) - ...
Huxley Dias
 

Semelhante a Design patterns js (20)

Database Refactoring- Manoel Pimentel
Database Refactoring-  Manoel PimentelDatabase Refactoring-  Manoel Pimentel
Database Refactoring- Manoel Pimentel
 
Workshop Briefing
Workshop BriefingWorkshop Briefing
Workshop Briefing
 
Service Builder - Orange Founders
Service Builder - Orange FoundersService Builder - Orange Founders
Service Builder - Orange Founders
 
Webinar Project Builder PM CANVAS
Webinar Project Builder PM CANVASWebinar Project Builder PM CANVAS
Webinar Project Builder PM CANVAS
 
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceEncontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
 
Introdução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webIntrodução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações web
 
Notification e result pattern
Notification e result patternNotification e result pattern
Notification e result pattern
 
Briefing - Workshop
Briefing - WorkshopBriefing - Workshop
Briefing - Workshop
 
Design System: Dominando o Design at Scale
Design System: Dominando o Design at ScaleDesign System: Dominando o Design at Scale
Design System: Dominando o Design at Scale
 
DESIGNER E FRONT-END DEV: Prontos para mudar seu workflow?
DESIGNER E FRONT-END DEV: Prontos para mudar seu workflow?DESIGNER E FRONT-END DEV: Prontos para mudar seu workflow?
DESIGNER E FRONT-END DEV: Prontos para mudar seu workflow?
 
Seminários V - Ads -UNOPAR ARAGUAINA,TO - POLO II
Seminários V - Ads -UNOPAR ARAGUAINA,TO - POLO IISeminários V - Ads -UNOPAR ARAGUAINA,TO - POLO II
Seminários V - Ads -UNOPAR ARAGUAINA,TO - POLO II
 
Prototipagem e MVP para startups
Prototipagem e MVP para startupsPrototipagem e MVP para startups
Prototipagem e MVP para startups
 
Metodologias ágeis com legos
Metodologias ágeis com legosMetodologias ágeis com legos
Metodologias ágeis com legos
 
Profissão programador práticas para melhoria contínua fatec pg setembro 2013
Profissão programador práticas para melhoria contínua fatec pg setembro 2013Profissão programador práticas para melhoria contínua fatec pg setembro 2013
Profissão programador práticas para melhoria contínua fatec pg setembro 2013
 
Fisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmoFisl 16 - Proteja sua aplicação de você mesmo
Fisl 16 - Proteja sua aplicação de você mesmo
 
Palestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnitPalestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnit
 
PMCanvas oque e para que serve 10.05.pptx
PMCanvas oque e para que serve  10.05.pptxPMCanvas oque e para que serve  10.05.pptx
PMCanvas oque e para que serve 10.05.pptx
 
Programacao Extrema
Programacao ExtremaProgramacao Extrema
Programacao Extrema
 
Agile Brazil 2012 - Padrões Para Implantar Métodos Ágeis
Agile Brazil 2012 - Padrões Para Implantar Métodos ÁgeisAgile Brazil 2012 - Padrões Para Implantar Métodos Ágeis
Agile Brazil 2012 - Padrões Para Implantar Métodos Ágeis
 
Mensurando a Experiência do Usuário ( A Importância dos Dados Para UX ) - ...
Mensurando a Experiência do Usuário ( A Importância dos Dados Para UX ) - ...Mensurando a Experiência do Usuário ( A Importância dos Dados Para UX ) - ...
Mensurando a Experiência do Usuário ( A Importância dos Dados Para UX ) - ...
 

Último

História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 

Último (6)

História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 

Design patterns js

  • 2. FABIO MIRANDA GONÇALVES SOFTWARE ENGINEER NO MERCADO LIVRE BACHAREL EM SISTEMAS DE INFORMAÇÃO PELA USJT DESENVOLVEDOR DESDE 2008 @FABIOMIRGO fabio.mirgo@gmail.com
  • 3. DESIGN PATTERN COM JAVASCRIPT
  • 4. DESIGN PATTERN COM JAVASCRIPT DESIGN PATTERN ??
  • 5. DESIGN PATTERN COM JAVASCRIPT DESIGN PATTERN ?? "Em Engenharia de Software, um Design Pattern é uma solução geral, reutilizável para um problema comum, em um determinado contexto no design de software." Wikipedia
  • 6. UMA MELHOR DEFINIÇÃO DESIGN PATTERN COM JAVASCRIPT ▸ Pense em Design Patterns como receitas de bolo. ▸ Cada receita é uma forma padrão que você tem que desenvolver (seguir a receita, escrever código como a receita pede) ▸ Existem várias formas, e cada forma tem um nome. ▸ Cada forma resolve melhor um tipo de problema. ▸ Essa forma funciona tão bem, que ela acaba sendo uma solução geral e reutilizável.
  • 7. POR QUE USAR ? DESIGN PATTERN COM JAVASCRIPT ▸ É uma solução geral para um tipo de problema. ▸ É reutilizável. ▸ Código mais limpo. ▸ Código mais organizado. ▸ Menor complexidade para o seu código (tem padrão).
  • 8. DESIGN PATTERN COM JAVASCRIPT QUANDO USAR ? ▸ Para usar, é necessário primeiro enxergar problemas que se repetem. ▸ Ao enxergar um problema que se repete, deve-se buscar qual o Design Pattern mais adequado para solucionar esse problema, ou seja, qual a melhor forma. ▸ Seu projeto inteiro não é um problema que se repete ▸ Não use demasiadamente. ▸ Faça um trade-off, refactors futuros tem um custo maior.
  • 9. FRAMEWORKS E DESIGN PATTERNS DESIGN PATTERN COM JAVASCRIPT MAS AGORA TEM FRAMEWORK, NÃO PRECISA DE DESIGN PATTERN. CERTO ? ERRADO !
  • 10. EXEMPLO PRÁTICO - ENVIO DE REMESSA PARA O BANCO DESIGN PATTERN COM JAVASCRIPT
  • 11. DESIGN PATTERN COM JAVASCRIPT PROBLEMA BACKEND FRONTEND Envio de remessa
  • 12. DESIGN PATTERN COM JAVASCRIPT PROBLEMA BACKEND FRONTEND Envio de remessa
  • 13. DESIGN PATTERN COM JAVASCRIPT PROBLEMA BACKEND FRONTEND Envio de remessa
  • 14. DESIGN PATTERN COM JAVASCRIPT PROBLEMA BACKEND FRONTEND Envio de remessa
  • 15. DESIGN PATTERN COM JAVASCRIPT PROBLEMA BACKEND FRONTEND Envio de remessa n … …
  • 16. CODE SMELL DESIGN PATTERN COM JAVASCRIPT
  • 17. DESIGN PATTERN COM JAVASCRIPT CÓDIGO VESPEIRO - NINGUÉM QUER POR A MÃO
  • 18. STRATEGY - O DESIGN PATTERN ESCOLHIDO DESIGN PATTERN COM JAVASCRIPT "definir uma família de algoritmos, encapsular cada uma delas e torná-las intercambiáveis. Strategy permite que o algoritmo varie independentemente dos clientes que o utilizam” (livro GoF)
  • 19. CODE TIME DESIGN PATTERN COM JAVASCRIPT
  • 20. MERCADO LIVRE - TEMOS VAGAS DESIGN PATTERN COM JAVASCRIPT ▸ Backend pleno e Senior - [DevBE] ▸ Frontend pleno e Senior - [DevFE] ▸ Desenvolvedor Android - [DevAnd] ▸ Desenvolvedor iOS - [DeviOS] ▸ Analista de Infra/Suporte - [AnaInfra] ▸ Mais detalhes:  https://jobs.mercadolibre.com/ ▸ Enviar CV para: meire.monte@mercadolivre.com