Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

É Pythonico, mas... é macarrônico

192 views

Published on

Palestra na Python Brasil 2016. Como o uso de camadas e ferramentas corretas previnem violações do Acyclic Dependency Principle.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

É Pythonico, mas... é macarrônico

  1. 1. É Pythônico, mas... é macarrônico? Marcio Marchini www.BetterDeveloper.net Python Brasil 2016
  2. 2. © 2016 Marcio Marchini Sobre o Público Alvo: Desenvolvedores em Times
  3. 3. © 2016 Marcio Marchini Sobre o Título: Pythonic – no Zen (PEP 20)
  4. 4. © 2016 Marcio Marchini Sobre o Título: Pythonic – no Hitchhiker’s
  5. 5. © 2016 Marcio Marchini Pythonic: Programming in the Small Programming in The Small X Programming in the Large
  6. 6. © 2016 Marcio Marchini Sobre o Título: Macarrônico • Emaranhado nas Dependências (Tangles)
  7. 7. © 2016 Marcio Marchini Programming In The Large / Package Principles 1. Reuse-release equivalence principle (REP) 2. Common-reuse principle (CRP) 3. Common-closure principle (CCP) 4. Acyclic dependencies principle (ADP) 5. Stable-dependencies principle (SDP) 6. Stable-abstractions principle (SAP)
  8. 8. © 2016 Marcio Marchini Macarrônico: Viola ADP  ADP: Acyclic Dependency Principle • Não deve haver ciclos no grafo de dependência de componentes/packages
  9. 9. © 2016 Marcio Marchini Antídoto: Módulos, Camadas… • Camadas… Tudo bonito nas figuras… • … mas seu código é assim mesmo? • Você consegue provar?
  10. 10. © 2016 Marcio Marchini Fontes do Django na ferramenta – viola ADP? Camadas? (Cada seta para cima é uma violação de ADP)
  11. 11. © 2016 Marcio Marchini Django: Tangle of 16 , Notação Gráfica
  12. 12. © 2016 Marcio Marchini Sistemas em Camadas, Notação DSM Em Camadas (Layered) Estritamente em Camadas (Strictly Layered): uma camada só usa a imediatamente abaixo
  13. 13. © 2016 Marcio Marchini DSM - Ferramenta • Structure 101 (C, C++, C#, Java, Delphi, Python, …)  Minha preferida
  14. 14. © 2016 Marcio Marchini Django: Tangle of 16 , Notação DSM
  15. 15. © 2016 Marcio Marchini Flask REST com SQLAlchemy  App referencia DB  DB referencia Flask  Model referencia DB http://flask-sqlalchemy.pocoo.org/2.1/quickstart/#a-minimal- application  Seu Model ficou acoplado à framework de REST  Mudar pra Bottle força-me a ter que abrir esse módulo (model)  Model Depende de REST (Controller)  API REST vai usar Model (normal)  Circularidade!!!
  16. 16. © 2016 Marcio Marchini Projeto Flask REST maior, sem Structure 101  Tangled antes de usar s101:
  17. 17. © 2016 Marcio Marchini Prevenindo Macarrão na Nexxera.com: GitLab + S101/build • Esteira GitLab: • Stage: Code Analysis; job: struct101
  18. 18. © 2016 Marcio Marchini Projeto Flask REST maior, com Structure 101  Untangled após usar s101:
  19. 19. © 2016 Marcio Marchini Garantindo sem Macarrão na Nexxera.com • Esteira GitLab: • Stage: Code Analysis; job: struct101
  20. 20. © 2016 Marcio Marchini GitLab CI runner / s101 na Nexxera.com • Structure 101g/build analisa tangles na esteira CD/CI
  21. 21. © 2016 Marcio Marchini Gitlab CI runner / s101 na Nexxera.com • Clean Code: Só código arquiteturalmente limpo passa!
  22. 22. © 2016 Marcio Marchini Concluindo • Cuidado com Tutoriais rápidos na Internet • Eles podem estar te guiando para o macarronismo • Cuidado: 10 anos de experiência versus 10 * (1 ano nas mesmas práticas) • “Frameworks injetam dependências no seu código” •Cuidado para não se amarrar demais • Incorpore s101 para garantir ADP
  23. 23. © 2016 Marcio Marchini Perguntas? Marcio Marchini www.BetterDeveloper.net/cursos.html Python Brasil 2016

×