SlideShare una empresa de Scribd logo
1 de 27
Padrões de Projeto
Design Patterns e AntiPatterns
Rodrigo Kono
MVP Microsoft - MCP, MCT, MCTS, MCPD
@rodrigokono
O que é Design Patterns?
É um padrão!
Tipo um padrão de vida?!
Tipo um padrão de beleza?
Tipo a Ana Paula Padrão?
Solução reutilizável para problemas recorrentes
no desenvolvimento software OO.
Design Patterns
• POO de maneira inteligente
o Otimização de uma estrutura/processo
• Qualidade e reusabilidade de código
• Soluções indicada para cenários específicos
Design Patterns
Tipos de Patterns
Criacionais
Estruturais
Comportamentais
Design para composição de classe e objeto
Comunicação de objetos da classe
Criação de objetos / Instaciamento de classes
Que padrão é esse?!
Anti-Pattern (antipadrões)
Solução comum e recorrente para
determinados tipos de problemas com efeitos
colaterais muito negativos e indesejáveis.
Anti-Pattern
Um Anti-Pattern pode te deixar em uma situação pior do que a de início.
Tipos de Anti-Patterns
Arquitetura
Desenvolvimento
Projetos
Problemas comuns nas fases de
codificação e desenvolvimento de aplicações
Problemas que atingem a gerência de pessoal e de
projetos
Problemas comuns nas fases de
concepção, projeto e desenho de Sistema.
Anti-Pattern de Arquitetura
Boa arquitetura é um fator crítico para o sucesso do
desenvolvimento do sistema.
Stovepipe system
Intellectual Violence
Falas Típicas:
“Utilizei um schema validator para poder validar se era possível o marshalling
daquele stub”
“Esta classe trabalha com o conceito de autômato-finito de três estados para
fazer a busca em back-tracking em uma árvore binária”
Problema: Membros da equipe conversam de teorias e termos desconhecidos
pelos demais.
Solução: estimular a difusão de conhecimentos dentro da equipe
Anti-Pattern de Arquitetura
Reinventing the Wheel
Falas Típicas:
“Escrevemos uma classe para manipular XML
melhor do que as classes oficiais do C++!”
“A ferramenta de UML era muito ruim, por isso decidimos implementar uma
outra...”
Problema: Decisão de reimplementar tecnologias já existentes ou fazer “do jeito
da equipe” atrasam e confundem o projeto.
Solução: Buscar e pesquisar a melhor solução e utilizar os padrões.
Anti-Pattern de Arquitetura
Anti-Pattern de Desenvolvimento
Utilizam várias abordagens de refatoração
formais e informais.
Gold plating
Golden Hammer
Falas Típicas:
“Utilizamos XML para representar os objetos. E também para servir como
banco de dados, troca de mensagens, armazenar imagens codificadas,
substituir as páginas html, e também para...”
Problema: Um conceito ou tecnologia familiar é aplicado de forma errada, para
resolver todo e qualquer problema.
Solução: Estudo de novas idéias e soluções, treinamento e
exposição a novos paradigmas permite pensar em soluções
mais adequadas
Anti-Pattern de Desenvolvimento
The Blob
Falas típicas:
“Para manipular qualquer tipo de documento,
utilizamos a classe UtilidadesDocumento. Os 145
métodos dela permitem ler e salvar documentos .doc, .xls,
.txt, .rtf, .html, .xml... Uma beleza!”
Resumo: Classes são implementadas ao estilo procedural, algumas com
centenas de métodos e outras apenas como depósitos de dados.
Solução: Redistribuição de responsabilidades (SoC) e reengenharia
Anti-Pattern de Desenvolvimento
Saiba como evitar um acidente!
Aprenda com os erros
Mas conheça os problemas para não cair em armadilhas!
Sistemas baseados em padrões têm mais
qualidade
Equipes que evitam anti-pattern têm menos
surpresas desagradáveis
1. Conhecer e saber aplicar Design Pattern.
2. Estudar Anti-Pattern
Dicas para ser um bom desenvolvedor
Por onde estudar?!
Design Patterns: Elements of
Reusable Object-Oriented
Software
GOF
AntiPatterns and Patterns in
Software Configuration
Management
- Coloque em prática.
- Discuta sobre determinado pattern
com desenvolvedores mais
experientes.
Rodrigo Kono
www.rodrigokono.net
contato@rodrigokono.net
@rodrigokono
Obrigado!

Más contenido relacionado

La actualidad más candente

1 requisitos funcionais e não funcionais ok
1  requisitos funcionais e não funcionais ok1  requisitos funcionais e não funcionais ok
1 requisitos funcionais e não funcionais okMarcos Morais de Sousa
 
Aula 7 - Modelos de Ciclo de Vida.pptx
Aula 7 - Modelos de Ciclo de Vida.pptxAula 7 - Modelos de Ciclo de Vida.pptx
Aula 7 - Modelos de Ciclo de Vida.pptxALEXANDRELISBADASILV
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaFabrício Campos
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareeros.viggiano
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de SoftwareLeinylson Fontinele
 
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...Natanael Simões
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Adriano Tavares
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareelliando dias
 
Introducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareIntroducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareUFPA
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projetoejdn1
 
Gerência de Configuração
Gerência de ConfiguraçãoGerência de Configuração
Gerência de ConfiguraçãoWagner Zaparoli
 
Aula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdfAula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdfMarcelo Silva
 
Engenharia de requisitos
Engenharia de requisitosEngenharia de requisitos
Engenharia de requisitosMailson Queiroz
 

La actualidad más candente (20)

1 requisitos funcionais e não funcionais ok
1  requisitos funcionais e não funcionais ok1  requisitos funcionais e não funcionais ok
1 requisitos funcionais e não funcionais ok
 
Aula 7 - Modelos de Ciclo de Vida.pptx
Aula 7 - Modelos de Ciclo de Vida.pptxAula 7 - Modelos de Ciclo de Vida.pptx
Aula 7 - Modelos de Ciclo de Vida.pptx
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem prática
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de Software
 
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
 
Aula capitulo9 diagrama_estados
Aula capitulo9 diagrama_estadosAula capitulo9 diagrama_estados
Aula capitulo9 diagrama_estados
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1
 
Analise de Requisitos Software
Analise de Requisitos SoftwareAnalise de Requisitos Software
Analise de Requisitos Software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Introducao a Arquitetura de Software
Introducao a Arquitetura de SoftwareIntroducao a Arquitetura de Software
Introducao a Arquitetura de Software
 
Projeto de Software
Projeto de SoftwareProjeto de Software
Projeto de Software
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
 
Aula4 levantamento requisitos
Aula4 levantamento requisitosAula4 levantamento requisitos
Aula4 levantamento requisitos
 
Gerência de Configuração
Gerência de ConfiguraçãoGerência de Configuração
Gerência de Configuração
 
Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
 
Aula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdfAula 01 - Fundamentos de Banco de Dados (2).pdf
Aula 01 - Fundamentos de Banco de Dados (2).pdf
 
Engenharia de requisitos
Engenharia de requisitosEngenharia de requisitos
Engenharia de requisitos
 

Destacado

Introdução a Padrões de Projeto
Introdução a Padrões de ProjetoIntrodução a Padrões de Projeto
Introdução a Padrões de ProjetoEduardo Mendes
 
Carreira de desenvolvimento de software utilizando tecnologia microsoft
Carreira de desenvolvimento de software utilizando tecnologia microsoftCarreira de desenvolvimento de software utilizando tecnologia microsoft
Carreira de desenvolvimento de software utilizando tecnologia microsoftRodrigo Kono
 
Oportunidades Acadêmicas e a carreira de desenvolvimento de software.
Oportunidades Acadêmicas e a carreira de desenvolvimento de software.Oportunidades Acadêmicas e a carreira de desenvolvimento de software.
Oportunidades Acadêmicas e a carreira de desenvolvimento de software.Rodrigo Kono
 
Abertura - Workshop ASP.NET Core
Abertura - Workshop ASP.NET CoreAbertura - Workshop ASP.NET Core
Abertura - Workshop ASP.NET CoreRodrigo Kono
 
Projeto Aribos - A3 Design
Projeto Aribos - A3 DesignProjeto Aribos - A3 Design
Projeto Aribos - A3 DesignNathanye Godinho
 
Evento em Design - projeto
Evento em Design - projetoEvento em Design - projeto
Evento em Design - projetoprofclaubordin
 
Leveraging Social Media Marketing Trends
Leveraging Social Media Marketing TrendsLeveraging Social Media Marketing Trends
Leveraging Social Media Marketing TrendsErica Campbell Byrum
 
презентация1
презентация1презентация1
презентация1KirillPavlov
 
JavaScript performance patterns
JavaScript performance patternsJavaScript performance patterns
JavaScript performance patternsStoyan Stefanov
 
REDtone IoT and Unified Inbox partner to integrate IoT devices with Social Media
REDtone IoT and Unified Inbox partner to integrate IoT devices with Social MediaREDtone IoT and Unified Inbox partner to integrate IoT devices with Social Media
REDtone IoT and Unified Inbox partner to integrate IoT devices with Social MediaDr. Mazlan Abbas
 
Mapa conceptual 2 de alejandra alvarez
Mapa conceptual 2 de alejandra alvarezMapa conceptual 2 de alejandra alvarez
Mapa conceptual 2 de alejandra alvarezLaChicaHolix99
 
28704893 sixth-sense-final-ppt
28704893 sixth-sense-final-ppt28704893 sixth-sense-final-ppt
28704893 sixth-sense-final-pptvignan university
 
Performance Implications of Mobile Design (Perf Audience Edition)
Performance Implications of Mobile Design (Perf Audience Edition)Performance Implications of Mobile Design (Perf Audience Edition)
Performance Implications of Mobile Design (Perf Audience Edition)Guy Podjarny
 
Metodologia de Projeto em Design - aula inicial
Metodologia de Projeto em Design - aula inicialMetodologia de Projeto em Design - aula inicial
Metodologia de Projeto em Design - aula inicialprofclaubordin
 

Destacado (20)

Introdução a Padrões de Projeto
Introdução a Padrões de ProjetoIntrodução a Padrões de Projeto
Introdução a Padrões de Projeto
 
Carreira de desenvolvimento de software utilizando tecnologia microsoft
Carreira de desenvolvimento de software utilizando tecnologia microsoftCarreira de desenvolvimento de software utilizando tecnologia microsoft
Carreira de desenvolvimento de software utilizando tecnologia microsoft
 
Cie52b
Cie52bCie52b
Cie52b
 
Gwab welcome
Gwab welcomeGwab welcome
Gwab welcome
 
Aula1
Aula1Aula1
Aula1
 
Oportunidades Acadêmicas e a carreira de desenvolvimento de software.
Oportunidades Acadêmicas e a carreira de desenvolvimento de software.Oportunidades Acadêmicas e a carreira de desenvolvimento de software.
Oportunidades Acadêmicas e a carreira de desenvolvimento de software.
 
Abertura - Workshop ASP.NET Core
Abertura - Workshop ASP.NET CoreAbertura - Workshop ASP.NET Core
Abertura - Workshop ASP.NET Core
 
Projeto Aribos - A3 Design
Projeto Aribos - A3 DesignProjeto Aribos - A3 Design
Projeto Aribos - A3 Design
 
Evento em Design - projeto
Evento em Design - projetoEvento em Design - projeto
Evento em Design - projeto
 
Leveraging Social Media Marketing Trends
Leveraging Social Media Marketing TrendsLeveraging Social Media Marketing Trends
Leveraging Social Media Marketing Trends
 
презентация1
презентация1презентация1
презентация1
 
Hanckemaborg Zuidhorn
Hanckemaborg ZuidhornHanckemaborg Zuidhorn
Hanckemaborg Zuidhorn
 
JavaScript performance patterns
JavaScript performance patternsJavaScript performance patterns
JavaScript performance patterns
 
Donar vida.
Donar vida.Donar vida.
Donar vida.
 
REDtone IoT and Unified Inbox partner to integrate IoT devices with Social Media
REDtone IoT and Unified Inbox partner to integrate IoT devices with Social MediaREDtone IoT and Unified Inbox partner to integrate IoT devices with Social Media
REDtone IoT and Unified Inbox partner to integrate IoT devices with Social Media
 
Mapa conceptual 2 de alejandra alvarez
Mapa conceptual 2 de alejandra alvarezMapa conceptual 2 de alejandra alvarez
Mapa conceptual 2 de alejandra alvarez
 
Gptw conference 14_oct2011-hyderabad_final
Gptw conference 14_oct2011-hyderabad_finalGptw conference 14_oct2011-hyderabad_final
Gptw conference 14_oct2011-hyderabad_final
 
28704893 sixth-sense-final-ppt
28704893 sixth-sense-final-ppt28704893 sixth-sense-final-ppt
28704893 sixth-sense-final-ppt
 
Performance Implications of Mobile Design (Perf Audience Edition)
Performance Implications of Mobile Design (Perf Audience Edition)Performance Implications of Mobile Design (Perf Audience Edition)
Performance Implications of Mobile Design (Perf Audience Edition)
 
Metodologia de Projeto em Design - aula inicial
Metodologia de Projeto em Design - aula inicialMetodologia de Projeto em Design - aula inicial
Metodologia de Projeto em Design - aula inicial
 

Similar a Padrões de Projeto - Design Patterns e Anti-Patterns

Padrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsPadrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsHerval Freire
 
Engenharia de Software II - Aula 9
Engenharia de Software II - Aula 9Engenharia de Software II - Aula 9
Engenharia de Software II - Aula 9Alessandro Almeida
 
Introdução à análise orientada a objetos parte 6
Introdução à análise orientada a objetos parte 6Introdução à análise orientada a objetos parte 6
Introdução à análise orientada a objetos parte 6ariovaldodias
 
Aula1 - Modelagem de Sistemas Orientada a Objetos
Aula1 - Modelagem de Sistemas Orientada a ObjetosAula1 - Modelagem de Sistemas Orientada a Objetos
Aula1 - Modelagem de Sistemas Orientada a ObjetosLeandro Rezende
 
Pensamento projetual no desenvolvimento de software
Pensamento projetual no desenvolvimento de softwarePensamento projetual no desenvolvimento de software
Pensamento projetual no desenvolvimento de softwareUTFPR
 
Padrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosPadrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosFabio Kon
 
Programação Orientada a Objetos - Pós Graduação - aula 1
Programação Orientada a Objetos - Pós Graduação - aula 1Programação Orientada a Objetos - Pós Graduação - aula 1
Programação Orientada a Objetos - Pós Graduação - aula 1Carlos Eduardo
 
Estilizando temas de WordPress
Estilizando temas de WordPressEstilizando temas de WordPress
Estilizando temas de WordPressAnyssa Ferreira
 
Boas praticas em_desenvolvimento_de_software
Boas praticas em_desenvolvimento_de_softwareBoas praticas em_desenvolvimento_de_software
Boas praticas em_desenvolvimento_de_softwareivanassisleal
 

Similar a Padrões de Projeto - Design Patterns e Anti-Patterns (20)

Padrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsPadrões De Projeto e Anti Patterns
Padrões De Projeto e Anti Patterns
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Engenharia de Software II - Aula 9
Engenharia de Software II - Aula 9Engenharia de Software II - Aula 9
Engenharia de Software II - Aula 9
 
[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto
 
PHP Anti Patterns
PHP Anti PatternsPHP Anti Patterns
PHP Anti Patterns
 
Introdução à análise orientada a objetos parte 6
Introdução à análise orientada a objetos parte 6Introdução à análise orientada a objetos parte 6
Introdução à análise orientada a objetos parte 6
 
Aula1 - Modelagem de Sistemas Orientada a Objetos
Aula1 - Modelagem de Sistemas Orientada a ObjetosAula1 - Modelagem de Sistemas Orientada a Objetos
Aula1 - Modelagem de Sistemas Orientada a Objetos
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
Introdução ao XP
Introdução ao XPIntrodução ao XP
Introdução ao XP
 
Como desenvolver-software
Como desenvolver-softwareComo desenvolver-software
Como desenvolver-software
 
Pensamento projetual no desenvolvimento de software
Pensamento projetual no desenvolvimento de softwarePensamento projetual no desenvolvimento de software
Pensamento projetual no desenvolvimento de software
 
GoF.ppt
GoF.pptGoF.ppt
GoF.ppt
 
Padrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosPadrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a Objetos
 
Programação Orientada a Objetos - Pós Graduação - aula 1
Programação Orientada a Objetos - Pós Graduação - aula 1Programação Orientada a Objetos - Pós Graduação - aula 1
Programação Orientada a Objetos - Pós Graduação - aula 1
 
Orientação a Objetos (2)
Orientação a Objetos (2)Orientação a Objetos (2)
Orientação a Objetos (2)
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Clean Code
Clean CodeClean Code
Clean Code
 
Estilizando temas de WordPress
Estilizando temas de WordPressEstilizando temas de WordPress
Estilizando temas de WordPress
 
Boas praticas em_desenvolvimento_de_software
Boas praticas em_desenvolvimento_de_softwareBoas praticas em_desenvolvimento_de_software
Boas praticas em_desenvolvimento_de_software
 
Crystal
CrystalCrystal
Crystal
 

Más de Rodrigo Kono

Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.xDicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.xRodrigo Kono
 
Develop using Office Graph API
Develop using Office Graph APIDevelop using Office Graph API
Develop using Office Graph APIRodrigo Kono
 
.NET no Browser - Webassembly com Blazor!
.NET no Browser - Webassembly com Blazor!.NET no Browser - Webassembly com Blazor!
.NET no Browser - Webassembly com Blazor!Rodrigo Kono
 
.NET para construir qualquer coisa! (Visão Geral) #dotnetconf
.NET para construir qualquer coisa! (Visão Geral) #dotnetconf.NET para construir qualquer coisa! (Visão Geral) #dotnetconf
.NET para construir qualquer coisa! (Visão Geral) #dotnetconfRodrigo Kono
 
ASP.NET Core 2.1 #dotnetconf
ASP.NET Core 2.1 #dotnetconfASP.NET Core 2.1 #dotnetconf
ASP.NET Core 2.1 #dotnetconfRodrigo Kono
 
Novidades do ASP.NET Core 2.1
Novidades do ASP.NET Core 2.1Novidades do ASP.NET Core 2.1
Novidades do ASP.NET Core 2.1Rodrigo Kono
 
Controlando o Ciclo de Software e porque você deveria usar o VSTS
Controlando o Ciclo de Software e porque você deveria usar o VSTSControlando o Ciclo de Software e porque você deveria usar o VSTS
Controlando o Ciclo de Software e porque você deveria usar o VSTSRodrigo Kono
 
Ciclo de vida do desenvolvimento de software de ponta a ponta
Ciclo de vida do desenvolvimento de software de ponta a pontaCiclo de vida do desenvolvimento de software de ponta a ponta
Ciclo de vida do desenvolvimento de software de ponta a pontaRodrigo Kono
 
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net core
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net coreConhecimentos para tomar atitude e migrar sua aplicação para asp.net core
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net coreRodrigo Kono
 
Controle do ciclo de vida do desenvolvimento de software com tfs vsts
Controle do ciclo de vida do desenvolvimento de software com tfs  vstsControle do ciclo de vida do desenvolvimento de software com tfs  vsts
Controle do ciclo de vida do desenvolvimento de software com tfs vstsRodrigo Kono
 
Desenvolvimento add in Office 2016
Desenvolvimento add in Office 2016Desenvolvimento add in Office 2016
Desenvolvimento add in Office 2016Rodrigo Kono
 
Além do código dicas de evolução profissional
Além do código   dicas de evolução profissionalAlém do código   dicas de evolução profissional
Além do código dicas de evolução profissionalRodrigo Kono
 
Aprenda a controlar sua aplicação ASP.NET Core com técnicas de DevOps e ALM
Aprenda a controlar sua aplicação ASP.NET Core com técnicas de DevOps e ALMAprenda a controlar sua aplicação ASP.NET Core com técnicas de DevOps e ALM
Aprenda a controlar sua aplicação ASP.NET Core com técnicas de DevOps e ALMRodrigo Kono
 
O que você precisa saber sobre ASP.NET CORE
O que você precisa saber sobre ASP.NET COREO que você precisa saber sobre ASP.NET CORE
O que você precisa saber sobre ASP.NET CORERodrigo Kono
 
Deployment no Azure
Deployment no AzureDeployment no Azure
Deployment no AzureRodrigo Kono
 
Servidor de Build e Integração Contínua
Servidor de Build e Integração ContínuaServidor de Build e Integração Contínua
Servidor de Build e Integração ContínuaRodrigo Kono
 
Dia 01 - Workshop ASP.NET CORE 1.1
Dia 01 - Workshop ASP.NET CORE 1.1Dia 01 - Workshop ASP.NET CORE 1.1
Dia 01 - Workshop ASP.NET CORE 1.1Rodrigo Kono
 
Desenvolvimento .NET no Linux. Veja porque a Microsoft ama Linux e Open Source
Desenvolvimento .NET no Linux. Veja porque a Microsoft ama Linux e Open SourceDesenvolvimento .NET no Linux. Veja porque a Microsoft ama Linux e Open Source
Desenvolvimento .NET no Linux. Veja porque a Microsoft ama Linux e Open SourceRodrigo Kono
 
TypeScript: turbinando os poderes do desenvolvedor javascript
TypeScript: turbinando os poderes do desenvolvedor javascriptTypeScript: turbinando os poderes do desenvolvedor javascript
TypeScript: turbinando os poderes do desenvolvedor javascriptRodrigo Kono
 
TechLab de dotnet core no dotnetConf.local
TechLab de dotnet core no dotnetConf.localTechLab de dotnet core no dotnetConf.local
TechLab de dotnet core no dotnetConf.localRodrigo Kono
 

Más de Rodrigo Kono (20)

Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.xDicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
 
Develop using Office Graph API
Develop using Office Graph APIDevelop using Office Graph API
Develop using Office Graph API
 
.NET no Browser - Webassembly com Blazor!
.NET no Browser - Webassembly com Blazor!.NET no Browser - Webassembly com Blazor!
.NET no Browser - Webassembly com Blazor!
 
.NET para construir qualquer coisa! (Visão Geral) #dotnetconf
.NET para construir qualquer coisa! (Visão Geral) #dotnetconf.NET para construir qualquer coisa! (Visão Geral) #dotnetconf
.NET para construir qualquer coisa! (Visão Geral) #dotnetconf
 
ASP.NET Core 2.1 #dotnetconf
ASP.NET Core 2.1 #dotnetconfASP.NET Core 2.1 #dotnetconf
ASP.NET Core 2.1 #dotnetconf
 
Novidades do ASP.NET Core 2.1
Novidades do ASP.NET Core 2.1Novidades do ASP.NET Core 2.1
Novidades do ASP.NET Core 2.1
 
Controlando o Ciclo de Software e porque você deveria usar o VSTS
Controlando o Ciclo de Software e porque você deveria usar o VSTSControlando o Ciclo de Software e porque você deveria usar o VSTS
Controlando o Ciclo de Software e porque você deveria usar o VSTS
 
Ciclo de vida do desenvolvimento de software de ponta a ponta
Ciclo de vida do desenvolvimento de software de ponta a pontaCiclo de vida do desenvolvimento de software de ponta a ponta
Ciclo de vida do desenvolvimento de software de ponta a ponta
 
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net core
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net coreConhecimentos para tomar atitude e migrar sua aplicação para asp.net core
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net core
 
Controle do ciclo de vida do desenvolvimento de software com tfs vsts
Controle do ciclo de vida do desenvolvimento de software com tfs  vstsControle do ciclo de vida do desenvolvimento de software com tfs  vsts
Controle do ciclo de vida do desenvolvimento de software com tfs vsts
 
Desenvolvimento add in Office 2016
Desenvolvimento add in Office 2016Desenvolvimento add in Office 2016
Desenvolvimento add in Office 2016
 
Além do código dicas de evolução profissional
Além do código   dicas de evolução profissionalAlém do código   dicas de evolução profissional
Além do código dicas de evolução profissional
 
Aprenda a controlar sua aplicação ASP.NET Core com técnicas de DevOps e ALM
Aprenda a controlar sua aplicação ASP.NET Core com técnicas de DevOps e ALMAprenda a controlar sua aplicação ASP.NET Core com técnicas de DevOps e ALM
Aprenda a controlar sua aplicação ASP.NET Core com técnicas de DevOps e ALM
 
O que você precisa saber sobre ASP.NET CORE
O que você precisa saber sobre ASP.NET COREO que você precisa saber sobre ASP.NET CORE
O que você precisa saber sobre ASP.NET CORE
 
Deployment no Azure
Deployment no AzureDeployment no Azure
Deployment no Azure
 
Servidor de Build e Integração Contínua
Servidor de Build e Integração ContínuaServidor de Build e Integração Contínua
Servidor de Build e Integração Contínua
 
Dia 01 - Workshop ASP.NET CORE 1.1
Dia 01 - Workshop ASP.NET CORE 1.1Dia 01 - Workshop ASP.NET CORE 1.1
Dia 01 - Workshop ASP.NET CORE 1.1
 
Desenvolvimento .NET no Linux. Veja porque a Microsoft ama Linux e Open Source
Desenvolvimento .NET no Linux. Veja porque a Microsoft ama Linux e Open SourceDesenvolvimento .NET no Linux. Veja porque a Microsoft ama Linux e Open Source
Desenvolvimento .NET no Linux. Veja porque a Microsoft ama Linux e Open Source
 
TypeScript: turbinando os poderes do desenvolvedor javascript
TypeScript: turbinando os poderes do desenvolvedor javascriptTypeScript: turbinando os poderes do desenvolvedor javascript
TypeScript: turbinando os poderes do desenvolvedor javascript
 
TechLab de dotnet core no dotnetConf.local
TechLab de dotnet core no dotnetConf.localTechLab de dotnet core no dotnetConf.local
TechLab de dotnet core no dotnetConf.local
 

Padrões de Projeto - Design Patterns e Anti-Patterns

  • 1. Padrões de Projeto Design Patterns e AntiPatterns Rodrigo Kono MVP Microsoft - MCP, MCT, MCTS, MCPD @rodrigokono
  • 2. O que é Design Patterns?
  • 4. Tipo um padrão de vida?!
  • 5. Tipo um padrão de beleza?
  • 6. Tipo a Ana Paula Padrão?
  • 7. Solução reutilizável para problemas recorrentes no desenvolvimento software OO. Design Patterns
  • 8. • POO de maneira inteligente o Otimização de uma estrutura/processo • Qualidade e reusabilidade de código • Soluções indicada para cenários específicos Design Patterns
  • 9. Tipos de Patterns Criacionais Estruturais Comportamentais Design para composição de classe e objeto Comunicação de objetos da classe Criação de objetos / Instaciamento de classes
  • 10. Que padrão é esse?!
  • 12. Solução comum e recorrente para determinados tipos de problemas com efeitos colaterais muito negativos e indesejáveis. Anti-Pattern Um Anti-Pattern pode te deixar em uma situação pior do que a de início.
  • 13. Tipos de Anti-Patterns Arquitetura Desenvolvimento Projetos Problemas comuns nas fases de codificação e desenvolvimento de aplicações Problemas que atingem a gerência de pessoal e de projetos Problemas comuns nas fases de concepção, projeto e desenho de Sistema.
  • 14. Anti-Pattern de Arquitetura Boa arquitetura é um fator crítico para o sucesso do desenvolvimento do sistema. Stovepipe system
  • 15. Intellectual Violence Falas Típicas: “Utilizei um schema validator para poder validar se era possível o marshalling daquele stub” “Esta classe trabalha com o conceito de autômato-finito de três estados para fazer a busca em back-tracking em uma árvore binária” Problema: Membros da equipe conversam de teorias e termos desconhecidos pelos demais. Solução: estimular a difusão de conhecimentos dentro da equipe Anti-Pattern de Arquitetura
  • 16. Reinventing the Wheel Falas Típicas: “Escrevemos uma classe para manipular XML melhor do que as classes oficiais do C++!” “A ferramenta de UML era muito ruim, por isso decidimos implementar uma outra...” Problema: Decisão de reimplementar tecnologias já existentes ou fazer “do jeito da equipe” atrasam e confundem o projeto. Solução: Buscar e pesquisar a melhor solução e utilizar os padrões. Anti-Pattern de Arquitetura
  • 17. Anti-Pattern de Desenvolvimento Utilizam várias abordagens de refatoração formais e informais. Gold plating
  • 18. Golden Hammer Falas Típicas: “Utilizamos XML para representar os objetos. E também para servir como banco de dados, troca de mensagens, armazenar imagens codificadas, substituir as páginas html, e também para...” Problema: Um conceito ou tecnologia familiar é aplicado de forma errada, para resolver todo e qualquer problema. Solução: Estudo de novas idéias e soluções, treinamento e exposição a novos paradigmas permite pensar em soluções mais adequadas Anti-Pattern de Desenvolvimento
  • 19. The Blob Falas típicas: “Para manipular qualquer tipo de documento, utilizamos a classe UtilidadesDocumento. Os 145 métodos dela permitem ler e salvar documentos .doc, .xls, .txt, .rtf, .html, .xml... Uma beleza!” Resumo: Classes são implementadas ao estilo procedural, algumas com centenas de métodos e outras apenas como depósitos de dados. Solução: Redistribuição de responsabilidades (SoC) e reengenharia Anti-Pattern de Desenvolvimento
  • 20. Saiba como evitar um acidente!
  • 21. Aprenda com os erros
  • 22. Mas conheça os problemas para não cair em armadilhas!
  • 23. Sistemas baseados em padrões têm mais qualidade
  • 24. Equipes que evitam anti-pattern têm menos surpresas desagradáveis
  • 25. 1. Conhecer e saber aplicar Design Pattern. 2. Estudar Anti-Pattern Dicas para ser um bom desenvolvedor
  • 26. Por onde estudar?! Design Patterns: Elements of Reusable Object-Oriented Software GOF AntiPatterns and Patterns in Software Configuration Management - Coloque em prática. - Discuta sobre determinado pattern com desenvolvedores mais experientes.

Notas del editor

  1. Começo fazendo uma pergunta. O que é design patterns? Padrão é uma coisa boa. Torna-se um referencial. Aliás, um bom referencial! Por exemplo se formos ver adiante...
  2. O padrão de beleza é um referencial.
  3. Ana Paula Padrão também.. Por que não!? =)
  4. Criacionais – Estruturais – Comportamentais
  5. Dizendo em poucas palavras, DP é ...
  6. O que é um antipadrão? Anti-pattern (Antipadrões), definir um vocabulário da indústria para os processos comuns defeituosos e implementações dentro das organizações. - forma literária que descreve uma solução que ocorre um problema que gera conseqüências muito negativas. - pode ser o resultado de um gerente ou desenvolvedor o que se pode fazer melhor. - não ter conhecimento ou experiência suficiente na resolução de um determinado tipo de problema - não ter aplicado um padrão perfeitamente bom no contexto errado. - proporcionar experiência no mundo real em reconhecer problemas recorrentes na indústria de software e fornecer um remédio detalhado para os dilemas mais comuns. - apresentar um plano detalhado para a inversão dessas causas subjacentes e implementação de soluções produtivas. efetivamente descreve as medidas que podem ser tomadas em vários níveis para melhorar o desenvolvimento de aplicações, o projeto de sistemas de software, e na gestão eficaz de projetos de software. => melhorar a produtividade de software em "soluções" que refatorado pode evitar alguns desses obstáculos.