Pular para o conteúdo
Skillpedia
Código em geral41 mil · #4927

python-design-patterns

Ajuda seu agente a usar padrões de design conhecidos em Python. É útil para criar código mais organizado, flexível e fácil de manter.

O que ela faz

Esta habilidade ajuda a organizar seu código de programação em Python para que ele seja mais fácil de entender, testar e modificar. Ela ensina princípios como manter as coisas simples e dar a cada parte do código uma única função.

Quando usar

  • ✓Ao começar um novo projeto ou parte dele.
  • ✓Quando o código existente está muito confuso e difícil de mudar.
  • ✓Ao decidir se deve criar uma nova estrutura ou repetir código.

Exemplo do que pedir para a IA

“Como posso organizar meu código Python para que seja mais fácil de manter?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/wshobson/agents/blob/main/plugins/python-development/skills/python-design-patterns/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/wshobson/agents/blob/main/plugins/python-development/skills/python-design-patterns/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A habilidade sugere seguir princípios como 'mantenha simples' e 'cada parte com uma única responsabilidade'. Ela também ensina a combinar objetos em vez de criar hierarquias complexas e a esperar até ter três exemplos antes de criar uma nova estrutura.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add wshobson/agents --skill python-design-patterns

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/python-development/skills/python-design-patterns/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Padrões de Design em Python

Escreva código Python de fácil manutenção usando princípios fundamentais de design. Esses padrões ajudam você a construir sistemas que são fáceis de entender, testar e modificar.

Quando Usar Esta Habilidade

  • Projetando novos componentes ou serviços
  • Refatorando código complexo ou emaranhado
  • Decidindo se deve criar uma abstração
  • Escolhendo entre herança e composição
  • Avaliando a complexidade e o acoplamento do código
  • Planejando arquiteturas modulares

Conceitos Principais

1. KISS (Keep It Simple - Mantenha Simples)

Escolha a solução mais simples que funcione. A complexidade deve ser justificada por requisitos concretos.

2. Responsabilidade Única (SRP - Single Responsibility Principle)

Cada unidade deve ter um único motivo para mudar. Separe as responsabilidades em componentes focados.

3. Composição Sobre Herança

Construa comportamento combinando objetos, não estendendo classes.

4. Regra dos Três

Espere até ter três instâncias antes de abstrair. A duplicação é frequentemente melhor do que a abstração prematura.

Início Rápido

# Simple beats clever
# Instead of a factory/registry pattern:
FORMATTERS = {"json": JsonFormatter, "csv": CsvFormatter}

def get_formatter(name: str) -> Formatter:
    return FORMATTERS[name]()

Padrões Detalhados e Exemplos Práticos

A documentação detalhada dos padrões está em references/details.md. Leia este arquivo quando a navegação de nível superior for insuficiente.

Resumo das Melhores Práticas

  1. Mantenha Simples - Escolha a solução mais simples que funcione
  2. Responsabilidade Única - Cada unidade tem um motivo para mudar
  3. Separe as Responsabilidades - Camadas distintas com propósitos claros
  4. Componha, não herde - Combine objetos para flexibilidade
  5. Regra dos Três - Espere antes de abstrair
  6. Mantenha Funções Pequenas - 20-50 linhas (varia com a complexidade), um propósito
  7. Injete Dependências - Injeção de construtor para testabilidade
  8. Delete Antes de Abstrair - Remova código morto, depois considere padrões
  9. Teste Cada Camada - Testes isolados para cada responsabilidade
  10. Explícito Acima de Esperto - Código legível supera código elegante

Solução de Problemas

Uma classe está crescendo e parece ter múltiplas responsabilidades, mas dividi-la parece errado. Aplique o teste do "motivo para mudar": liste todas as mudanças que poderiam exigir a edição desta classe. Se a lista tiver itens de domínios diferentes (por exemplo, análise de HTTP E regras de negócio E formatação), divida-a. Se todas as mudanças derivarem da mesma preocupação de domínio, a classe pode ter o tamanho apropriado.

Injetar todas as dependências através do construtor está produzindo construtores com 7+ parâmetros. Isso é um sinal de muitas responsabilidades em uma única classe, não um problema com a injeção de dependência. Divida a classe em unidades menores primeiro, então cada construtor naturalmente se tornará menor.

A composição está produzindo objetos "wrapper" profundamente aninhados que são difíceis de rastrear. Mantenha a composição rasa (2-3 níveis). Se o "wrapping" for o único mecanismo, considere se uma abordagem baseada em Protocolo ou composição de funções simples seria mais limpa do que uma cadeia de objetos decoradores.

A regra dos três diz para não abstrair ainda, mas a duplicação está causando bugs quando uma cópia é atualizada, mas a outra não. Duplicação que diverge de maneiras perigosas deve ser abstraída mais cedo. A regra dos três é uma heurística, não uma lei. Se as cópias já estão divergindo incorretamente, extraia imediatamente e adicione um teste que exercite o comportamento compartilhado.

Uma camada de serviço está importando da camada de API, quebrando a direção da dependência. Esta é uma violação de camadas. A camada de serviço não deve importar de handlers. Introduza uma camada compartilhada de tipos/modelos que ambos possam importar, mantendo a seta de dependência apontando para baixo (API → Serviço → Repositório).

Habilidades Relacionadas

  • python-testing-patterns — Teste cada camada isoladamente usando a estrutura de injeção de dependência estabelecida aqui
  • python-project-structure — Organize módulos e layout de diretórios para que os limites das camadas sejam explícitos desde o início
Perguntas frequentes

O que significa 'composição sobre herança'?

Significa que é melhor construir funcionalidades juntando objetos que já existem, em vez de criar novas classes que herdam de outras classes antigas.

Quando devo criar uma nova estrutura (abstração)?

A regra geral é esperar até que você tenha três exemplos semelhantes. Antes disso, repetir um pouco de código pode ser mais simples e seguro do que criar uma estrutura prematura.

Meu código está ficando muito grande e confuso. O que fazer?

Divida o código em partes menores, onde cada parte tem apenas uma razão para ser alterada. Isso torna cada parte mais focada e fácil de gerenciar.

Detalhes

Descrição original do autor

Python design patterns including KISS, Separation of Concerns, Single Responsibility, and composition over inheritance. Use this skill when designing a new service or component from scratch and choosing how to layer responsibilities, when refactoring a God class or monolithic function that has grown too large, when deciding whether to add a new abstraction or live with duplication, when evaluating

repo: wshobson/agents

Popularidade

Estrelas no GitHub
41 mil
Posição no ranking
#4927
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas