Type Hints Guide

📝 Guia de Type Hints - C-Suite

Data: 2025-12-01
Status:Em Progresso


🎯 Objetivo

Adicionar type hints gradualmente em todo o código Python para melhorar:
- Legibilidade - Fica claro quais tipos são esperados
- Manutenibilidade - IDEs podem fornecer melhor autocomplete
- Detecção de Erros - mypy pode detectar erros antes da execução
- Documentação - Type hints servem como documentação inline


📋 Estratégia de Implementação

Fase 1: Módulos Comuns (Em Progresso)

Fase 2: Apps Principais

Fase 3: Código Legado


🔧 Ferramentas

mypy

Type Checking no CI/CD


📚 Padrões de Type Hints

Funções Básicas

from typing import Optional, List, Dict, Any, Union

def get_user(user_id: int) -> Optional[Dict[str, Any]]:
    """Retorna usuário ou None se não encontrado"""
    ...

def process_items(items: List[str]) -> List[Dict[str, Any]]:
    """Processa lista de itens"""
    ...

def create_config(name: str, debug: bool = False) -> Dict[str, Any]:
    """Cria configuração"""
    ...

Funções Assíncronas

from typing import Awaitable, Coroutine

async def fetch_data(url: str) -> Dict[str, Any]:
    """Busca dados de uma URL"""
    ...

async def process_async(items: List[str]) -> List[Dict[str, Any]]:
    """Processa itens assincronamente"""
    ...

Classes e Métodos

from typing import Optional, List

class UserService:
    def __init__(self, db_url: str) -> None:
        self.db_url = db_url

    def get_user(self, user_id: int) -> Optional[Dict[str, Any]]:
        """Retorna usuário"""
        ...

    @classmethod
    def create(cls, name: str) -> "UserService":
        """Cria nova instância"""
        ...

Optional e Union

from typing import Optional, Union

def parse_value(value: Union[str, int]) -> Optional[int]:
    """Converte valor para int ou retorna None"""
    if isinstance(value, int):
        return value
    try:
        return int(value)
    except ValueError:
        return None

Generics

from typing import TypeVar, Generic, List

T = TypeVar('T')

class Cache(Generic[T]):
    def get(self, key: str) -> Optional[T]:
        ...

    def set(self, key: str, value: T) -> None:
        ...

Callables

from typing import Callable, List

def process_with_callback(
    items: List[str],
    callback: Callable[[str], bool]
) -> List[str]:
    """Processa itens com callback"""
    return [item for item in items if callback(item)]

✅ Checklist de Type Hints

Para Cada Função

Para Cada Classe

Para Cada Módulo


🚫 Erros Comuns

❌ Evitar

# Sem type hints
def process(data):
    return data.items()

# Type hints incompletos
def process(data: dict) -> dict:
    return data.items()

# Usar Any desnecessariamente
def process(data: Any) -> Any:
    return data.items()

✅ Preferir

# Type hints completos
def process(data: Dict[str, Any]) -> List[Tuple[str, Any]]:
    return list(data.items())

# Específico quando possível
def get_user_id(user: Dict[str, Any]) -> int:
    return user["id"]

📊 Progresso

Módulos Comuns

Apps


🎯 Próximos Passos

  1. ✅ Adicionar type hints em common_environments.py
  2. ⏳ Adicionar type hints em outros módulos comuns críticos
  3. ⏳ Habilitar mypy como obrigatório no CI/CD quando type hints estiverem completos
  4. ⏳ Adicionar type hints em código novo automaticamente
  5. ⏳ Migrar código legado gradualmente

📚 Recursos


Última atualização: 2025-12-01

🔊 Text-to-Speech

1.0x
1.0
Pronto para reproduzir