Princípios de engenharia de software

Estudo de Caso: Construindo Software em Python

Mark Pedigo

Principal Data Scientist

Roteiro

Roteiro mostrando o que do projeto já foi concluído e o que vamos iniciar.

Estudo de Caso: Construindo Software em Python

Modularidade

Modularidade: princípio-chave de engenharia de software

  • Módulos distintos e independentes
  • Funcionalidade focada e específica
  • Interfaces claras e bem definidas
  • Desenvolvimento, testes e manutenção separados
Estudo de Caso: Construindo Software em Python

O princípio DRY

"Don't Repeat Yourself": princípio-chave de engenharia de software

  • Minimize repetições
  • Componentes e classes reutilizáveis
  • Escreva uma vez, reutilize amplamente
  • Código limpo, sustentável e com menos erros
Estudo de Caso: Construindo Software em Python

Empacotamento

Empacotamento: princípio-chave de engenharia de software

  • Hierarquia de pastas organizada
  • Gerencie e estruture o código com eficiência
  • O arquivo __init__.py para inicializar módulos
Estudo de Caso: Construindo Software em Python

Criando um pacote

  • Estrutura mínima: pasta do pacote + arquivo Python
  • Pacote: pasta + arquivo __init__.py
  • Nomes de diretório curtos, minúsculos e com underscores
  • __init__.py: identifica a pasta como pacote
Estudo de Caso: Construindo Software em Python

Importações absolutas e relativas

  • Suponha que você tenha a seguinte estrutura de projeto
project \
   |--- package
   |    |--- module1.py
   |    |--- module2.py
   |--- main.py
  • Importação absoluta: caminho completo a partir da raiz
    • from package import module1
    • from package.module1 import function
  • Importação relativa: caminho baseado na localização atual (. = atual, .. = pai)
    • from . import module1
    • from .module1 import function
  • Absoluta: clara, porém menos portátil
  • Relativa: flexível, dependente do contexto
Estudo de Caso: Construindo Software em Python

Vamos praticar!

Estudo de Caso: Construindo Software em Python

Preparing Video For Download...