Más contenido relacionado Similar a É Pythonico, mas... é macarrônico (20) Más de Marcio Marchini (7) É Pythonico, mas... é macarrônico2. © 2016 Marcio Marchini
Sobre o Público Alvo: Desenvolvedores em Times
3. © 2016 Marcio Marchini
Sobre o Título: Pythonic – no Zen (PEP 20)
4. © 2016 Marcio Marchini
Sobre o Título: Pythonic – no Hitchhiker’s
5. © 2016 Marcio Marchini
Pythonic: Programming in the Small
Programming in The Small
X
Programming in the Large
6. © 2016 Marcio Marchini
Sobre o Título: Macarrônico
• Emaranhado nas Dependências (Tangles)
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. © 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. © 2016 Marcio Marchini
Antídoto: Módulos, Camadas…
• Camadas… Tudo bonito nas figuras…
• … mas seu código é assim mesmo?
• Você consegue provar?
10. © 2016 Marcio Marchini
Fontes do Django na ferramenta – viola ADP?
Camadas?
(Cada seta para cima é
uma violação de ADP)
11. © 2016 Marcio Marchini
Django: Tangle of 16 , Notação Gráfica
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. © 2016 Marcio Marchini
DSM - Ferramenta
• Structure 101 (C, C++, C#, Java, Delphi, Python, …)
Minha preferida
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. © 2016 Marcio Marchini
Projeto Flask REST maior, sem Structure 101
Tangled antes de usar s101:
17. © 2016 Marcio Marchini
Prevenindo Macarrão na Nexxera.com: GitLab + S101/build
• Esteira GitLab:
• Stage: Code Analysis; job: struct101
18. © 2016 Marcio Marchini
Projeto Flask REST maior, com Structure 101
Untangled após usar s101:
19. © 2016 Marcio Marchini
Garantindo sem Macarrão na Nexxera.com
• Esteira GitLab:
• Stage: Code Analysis; job: struct101
20. © 2016 Marcio Marchini
GitLab CI runner / s101 na Nexxera.com
• Structure 101g/build analisa tangles na esteira CD/CI
21. © 2016 Marcio Marchini
Gitlab CI runner / s101 na Nexxera.com
• Clean Code: Só código arquiteturalmente limpo passa!
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. © 2016 Marcio Marchini
Perguntas?
Marcio Marchini
www.BetterDeveloper.net/cursos.html
Python Brasil 2016