Anti-patterns - o que são e como se livrar deles em Python

F6d5a605df582ab9ea419ebef9f400b7?s=47 Caio Carrara
November 30, 2019

Anti-patterns - o que são e como se livrar deles em Python

Apresentação realizada no TDC Porto Alegre 2019.
Nessa apresentação serão apresentados diversos casos de anti-patterns ao se programar em Python e quais são as maneiras corretas de solucioná-los. A palestra é fortemente baseada no livro "The Little Book of Python Anti-Patterns", mas não se limita somente à essa publicação.

F6d5a605df582ab9ea419ebef9f400b7?s=128

Caio Carrara

November 30, 2019
Tweet

Transcript

  1. Anti-Patterns O que são e como se livrar deles em

    Python Caio Carrara eu@caiocarrara.com.br
  2. Caio Carrara • Desenvolvedor de Software ◦ Loadsmart ◦ RedHat

    ◦ Olist ◦ ThoughtWorks • Pythonista • Tech Lead Tech Lead @ Loadsmart
  3. Anti-patterns

  4. Anti-patterns https://martinfowler.com/bliki/AntiPattern.html

  5. O que são anti-patterns “Um antipadrão é como um padrão,

    exceto que ele parece somente superficialmente como uma solução, mas na verdade não é.” - Andrew Koenig
  6. O que são anti-patterns Anti-patterns podem ser até mais perigosos

    do que erros tradicionais
  7. Python Anti-Patterns • Acessar membros internos (protegidos) de uma classe

  8. Por que aprender anti-patterns?

  9. Anti-Patterns - para saber mais https://sourcemaking.com/antipatterns

  10. Python Anti-Patterns

  11. Python Anti-Patterns • Corretude • Manutenabilidade • Legibilidade • Segurança

    • Performance* • Django
  12. Corretude

  13. Python Anti-Patterns - Corretude • Atribuição para built-ins

  14. Python Anti-Patterns - Corretude • Atribuição para built-ins

  15. Python Anti-Patterns - Corretude • Má ordenação de except

  16. Python Anti-Patterns - Corretude • Má ordenação de except

  17. Python Anti-Patterns - Corretude • Valores mutáveis como padrão em

    argumentos
  18. Python Anti-Patterns - Corretude • Valores mutáveis como padrão em

    argumentos
  19. Python Anti-Patterns - Corretude • Nenhuma exceção especificada

  20. Python Anti-Patterns - Corretude • Nenhuma exceção especificada

  21. Manutenibilidade

  22. Python Anti-Patterns - Manutenabilidade • Wildcard imports

  23. Python Anti-Patterns - Manutenabilidade • Abrir arquivos sem context manager

  24. Python Anti-Patterns - Manutenabilidade • Abrir arquivos sem context manager

  25. Python Anti-Patterns - Manutenabilidade • Retornar mais de um tipo

    de dado
  26. Python Anti-Patterns - Manutenabilidade • Retornar mais de um tipo

    de dado
  27. Legibilidade

  28. Python Anti-Patterns - Legibilidade • Pedir permissão ao invés de

    perdão (EAFP - easier to ask for forgiveness than permission)
  29. Python Anti-Patterns - Legibilidade • Pedir permissão ao invés de

    perdão (EAFP - easier to ask for forgiveness than permission)
  30. Python Anti-Patterns - Legibilidade • map() ou filter() ao invés

    de List Comprehensions
  31. Python Anti-Patterns - Legibilidade • Não usar o método items()

    de dicionários
  32. Python Anti-Patterns - Legibilidade • Não usar o método items()

    de dicionários
  33. Segurança

  34. Python Anti-Patterns - Segurança • Uso de eval ou exec

  35. Anti-Patterns O que são e como se livrar deles em

    Python • Anti-patterns são mais do que simples erros • Há diversos tipos em Python ◦ Corretude ◦ Manutenibilidade ◦ Legibilidade ◦ Segurança ◦ Performance • É importante que saibamos como identificar e corrigir
  36. Obrigado Anti-patterns - o que são e como se livrar

    deles em Python Caio Carrara eu@caiocarrara.com.br speakerdeck.com/cacarrara
  37. Referências https://martinfowler.com/bliki/AntiPattern.html https://docs.quantifiedcode.com/python-anti-patterns/ https://sourcemaking.com/antipatterns https://realpython.com/the-most-diabolical-python-antipattern/