Biblioteca de Engenharia para IA
Prévia Markdown

Guia de Referência: Builder (Criacional)

Visualização renderizada do arquivo padroes/criacionais/builder.md. O conteúdo abaixo é o mesmo arquivo destinado a orientar a IA.

Guia de Referência: Builder (Criacional)

Este guia orienta a aplicação do padrão Builder em projetos de software. Objetivo: Construir objetos complexos em etapas claras, separando o processo de construção da representação final. O padrão deve ser usado somente quando as forças do problema o justificarem.


1. Problema que resolve

Construtores enormes, parâmetros opcionais, combinações inválidas e montagem complexa tornam a criação difícil de ler e manter.

Sinais no código/arquitetura

2. Quando usar

3. Quando NÃO usar

4. Estrutura e participantes

5. Procedimento de implementação

  1. Separe atributos obrigatórios de opcionais.
  2. Crie métodos de construção com nomes do domínio.
  3. Evite expor um produto parcialmente válido.
  4. Centralize validação no build() ou no próprio produto.
  5. Crie Directors apenas para receitas realmente reutilizadas.

6. Exemplo mental

ReportBuilder().forPeriod(period).withColumns(cols).withSummary().build() cria um relatório válido sem um construtor de 12 argumentos.

7. Benefícios esperados

8. Custos e trade-offs

9. Encaixe com Clean Architecture e SOLID

Builders de entidades devem respeitar invariantes do domínio; builders de infraestrutura/DTOs ficam nas bordas. Para testes, um Test Data Builder é especialmente útil.

Regras para a IA:

10. Caminho de refatoração

Aplique ao detectar long parameter list, criação repetitiva ou objetos montados em várias linhas inconsistentes.

Ao refatorar um sistema existente:

  1. Proteja o comportamento atual com testes.
  2. Faça passos pequenos e reversíveis.
  3. Introduza primeiro a abstração/contrato.
  4. Migre um fluxo por vez.
  5. Remova código antigo apenas após equivalência comportamental comprovada.

11. Estratégia de testes

Teste combinações válidas, campos obrigatórios, defaults e rejeição de estados inválidos.

Checklist mínimo:

12. Padrões relacionados

13. Perguntas de diagnóstico para a IA

  1. Qual aspecto do sistema realmente varia?
  2. Essa variação já está causando duplicação, condicionais ou acoplamento?
  3. Uma função/composição simples resolveria com menos abstrações?
  4. O padrão reduz o custo de uma mudança concreta que já é provável?
  5. Qual é o custo de introduzir novas classes, indireção e configuração?
  6. Como a decisão será testada e observada em produção?

14. Prompt pronto

Você é o arquiteto do projeto. Avalie se o padrão **Builder** é adequado para o problema abaixo.

Contexto: [DESCREVA o sistema, stack/arquitetura, estado atual e o problema observado]
Objetivo: [DESCREVA o resultado esperado ao avaliar ou aplicar este padrão]
Restrições: [DESCREVA prazo, legado, performance, testes, compatibilidade e o que não pode mudar]

Antes de codificar:
1. Identifique as forças que justificam ou rejeitam Builder.
2. Compare pelo menos uma alternativa mais simples e um padrão relacionado (Abstract Factory, Factory Method, Composite).
3. Se o padrão for justificado, mostre participantes, dependências e fluxo.
4. Preserve Clean Architecture/SOLID: regras centrais não dependem de infraestrutura.
5. Implemente incrementalmente, com testes.
6. Ao final, liste trade-offs e sinais de overengineering.

Não aplique o padrão apenas porque foi solicitado; rejeite-o se não houver variação/complexidade que o justifique.

Como preencher os campos

Exemplo preenchido

Contexto: Relatório possui muitas seções opcionais e combinações de configuração.
Objetivo: Construir relatórios complexos passo a passo com presets distintos.
Restrições: Objeto final deve ser válido; evitar builder se um construtor simples é suficiente.

15. Critério de aceite

A aplicação de Builder só está concluída quando:

16. Base Conceitual e Relações

/mind-map
Navegação contextual

Mapa gerado a partir dos títulos desta página. Clique em um ramo para abrir o expander correspondente e ir diretamente à seção.

progress_activity Gerando mapa…
Configurações

Aparência

Escolha como a biblioteca deve aparecer neste navegador.

Desenvolvimento

Informações da versão e autoria ficam disponíveis somente nesta área.