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!

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

  • 1.
    Padrões de Projeto DesignPatterns e AntiPatterns Rodrigo Kono MVP Microsoft - MCP, MCT, MCTS, MCPD @rodrigokono
  • 2.
    O que éDesign Patterns?
  • 3.
  • 4.
    Tipo um padrãode vida?!
  • 5.
    Tipo um padrãode beleza?
  • 6.
    Tipo a AnaPaula Padrão?
  • 7.
    Solução reutilizável paraproblemas recorrentes no desenvolvimento software OO. Design Patterns
  • 8.
    • POO demaneira 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 Designpara composição de classe e objeto Comunicação de objetos da classe Criação de objetos / Instaciamento de classes
  • 10.
  • 11.
  • 12.
    Solução comum erecorrente 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 Problemascomuns 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 Boaarquitetura é um fator crítico para o sucesso do desenvolvimento do sistema. Stovepipe system
  • 15.
    Intellectual Violence Falas Típicas: “Utilizeium 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 FalasTí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 Utilizamvárias abordagens de refatoração formais e informais. Gold plating
  • 18.
    Golden Hammer Falas Típicas: “UtilizamosXML 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: “Paramanipular 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 evitarum acidente!
  • 21.
  • 22.
    Mas conheça osproblemas para não cair em armadilhas!
  • 23.
    Sistemas baseados empadrões têm mais qualidade
  • 24.
    Equipes que evitamanti-pattern têm menos surpresas desagradáveis
  • 25.
    1. Conhecer esaber aplicar Design Pattern. 2. Estudar Anti-Pattern Dicas para ser um bom desenvolvedor
  • 26.
    Por onde estudar?! DesignPatterns: 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.
  • 27.

Notas do Editor

  • #3  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...
  • #6 O padrão de beleza é um referencial.
  • #7 Ana Paula Padrão também.. Por que não!? =)
  • #8 Criacionais – Estruturais – Comportamentais
  • #9 Dizendo em poucas palavras, DP é ...
  • #13 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.