Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Código flexivel com design patterns

Código flexivel com design patterns

Design Patterns (padrões de design) são arquiteturas genéricas de código que podem ser aplicadas na solução de diversos problemas. Eles foram inicialmente introduzidos pelo livro "Design Patterns: Elements of Reusable Object-Oriented Software" mas continuamos descobrindo novos até hoje. Esses padrões são formas tão boas de se estruturar código que alguns deles já vêm embutidos no Python, como o por exemplo o iterator.

Alguns dos melhores exemplos de aplicação de Design Patterns estão em bibliotecas open source. Estas bibliotecas se utilizam destes padrões para dar flexibilidade e facilidade de integração para os programadores. A biblioteca Python-Social-Auth (PSA) é um ótimo exemplo disso, ela permite integração com um grande número de provedores de autenticação ao mesmo tempo que funciona com os frameworks Django, Flask, Tornado e Pyramid e sabe lidar com os protocolos OAuth1, OAuth2, OpenID e SAML. Isto só é possível por que a PSA foi totalmente construida com base em Design Patterns.

Nesta talk vamos introduzir o que são Design Patterns e destrinchar mais sobre 3 dos mais populares: Adapter, Strategy e Collection Pipeline. Iremos dar exemplos de como aplicar esses padrões em situações reais, mostrar como eles podem melhorar a qualidade do seu código e mostrar como a PSA e outras bibliotecas se utilizam deles.

Ce373a3291defccc69a1392feb587f17?s=128

Filipe Ximenes

May 25, 2018
Tweet

Transcript

  1. Código flexível com Design Patterns

  2. quem vos fala xima (filipe ximenes) @xima no twitter @filipeximenes

    no facebook @filipeximenes no Github
  3. None
  4. vinta.com.br/playbook vinta.com.br/blog github.com/vintasoftware/

  5. vinta.com.br/careers

  6. Código flexível com Design Patterns

  7. Arquitetura e Urbanismo para devs

  8. "A Pattern Language" Christopher Alexander

  9. As características de uma linguagem de padrões Um formato elegante

    para se referenciar e debater Juntos os padrões precisam formar uma linguagem que quando aplicada produza objetos coerentes Melhorar a vida das pessoas
  10. None
  11. Padrão 120 - Caminhos e objetivos A disposição de caminhos

    vai parecer correta e confortável apenas quando forem compatíveis com o processo de caminhada. E isto é mais sutil do que você imagina.
  12. None
  13. Desire Paths (caminhos desejados)

  14. None
  15. None
  16. None
  17. None
  18. None
  19. padrões

  20. Essas ideias vêm da simples observação de que os lugares

    mais fabulosos do mundo não foram construídos por arquitetos mas sim por pessoas
  21. linguagem

  22. Padrão 121 - Formato do caminho ruas devem ser construídas

    para que as pessoas fiquem nelas e não apenas para que transitem (como são em sua maioria hoje em dia)
  23. Padrão 241 - Locais para sentar nos locais onde bancos

    são colocados sem que haja preocupação com o clima e a vista, quase que com certeza eles serão imprestáveis
  24. coerência

  25. design patterns 'padrões de projeto'

  26. "Design Patterns" Gang of Four (GoF)

  27. hora do código! github.com/filipeximenes/talk-design-patterns

  28. alguns aprendizados

  29. design patterns não são criados, eles emergem!

  30. sotaques e funcionaliades de cada linguagem de programação

  31. YAGNI You Aren't Gonna Need It Você Não Vai Precisar

    Disso
  32. KISS Keep It Stupid Simple Faça de uma forma 'estupidamente'

    simples
  33. SoC Separation Of Concerns Separação de Preocupações

  34. S.O.L.I.D

  35. 'design patterns' são uma 'pattern language'? Um formato elegante para

    se referenciar e debater OK Juntos os padrões precisam formar uma linguagem que quando aplicada produza objetos coerentes Melhorar a vida das pessoas programadoras
  36. Os 3 passos para aprender design patterns 1. Aceitação. aceite

    que design patterns vão lhe ajudar a escrever código melhor. 2. Reconhecimento. reconheça que é preciso estudar e estar atento a quando usá-los 3. Internalização. internalize os padrões para que seja fácil reconhecer "instintivamente" quando usá-los para resolver um problema http://cs.smu.ca/~porter/csc/465/notes/design_patterns.html
  37. (princípio básico do software livre) leia código fonte

  38. Boa arquitetura é sobre melhorar a vida das pessoas e

    na maioria das vezes isso significa fazer o que parece mais natural e mais prazeroso para nós
  39. Obrigado! ximenes@vinta.com.br Twitter: @xima Facebook: @filipeximenes bit.ly/pyne-design-patterns github.com/filipeximenes/talk-design-patterns