13:42
youtube.com ha 3 dias SRT AI Coder TODAY

Too Many Parameters? Use This Pattern

Técnicas para lidar com parâmetros demais em código.

Python Tecnologia Programação Coding

Conteudo

TLDR;

É o padrão do "parameter object": agrupe parâmetros relacionados em uma classe (por exemplo um dataclass em Python) que encapsula validação, propriedades e lógica como geração de cache key. Use-o quando um mesmo conjunto de argumentos é passado repetidamente entre várias funções, pois centraliza a validação e facilita adicionar novos campos sem mudar todo o código. Evite-o quando a função não precisa de todo esse conjunto de dados ou quando o objeto geraria abstração desnecessária e ocultaria dependências, já que pode introduzir acoplamento e responsabilidades indevidas.

Resumo

O vídeo explica o padrão parameter object para organizar funções que acumulam muitos parâmetros — no exemplo, uma busca de vídeos com texto, categoria, data, duração, região etc. — mostrando que espalhar os mesmos argumentos por várias funções (validação, cache, construção de query, rastreamento) torna o código confuso; argumentos nomeados melhoram legibilidade mas não resolvem o problema de design. A solução proposta é agrupar esses dados em uma classe de domínio, como um dataclass VideoSearchQuery, passando um único objeto para as funções. Isso simplifica assinaturas, centraliza lógica como normalização e validação (por exemplo usando post_init e dataclass frozen para imutabilidade), e permite expor propriedades úteis (ex.: cache_key) dentro do próprio objeto. Assim, adicionar novos campos afeta principalmente o objeto e não todo o código, facilitando manutenção e leitura. O autor também alerta que esse padrão não é sempre apropriado: antes de criar um objeto, pergunte por que a função precisa desses valores e evite passar o objeto inteiro para funções menores que só precisam de um campo, pois isso pode introduzir acoplamento desnecessário. Também é útil combinar esse padrão com separação de responsabilidades, entendendo suas limitações, e aplicar boas decisões arquiteturais para manter o código simples e testável e sustentável.