Biblioteca de Engenharia para IA
Prévia Markdown

Guia de Referência: Iterator (Comportamental)

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

Guia de Referência: Iterator (Comportamental)

Este guia orienta a aplicação do padrão Iterator em projetos de software. Objetivo: Percorrer elementos de uma coleção sem expor sua representação interna. O padrão deve ser usado somente quando as forças do problema o justificarem.


1. Problema que resolve

Clientes precisam navegar estruturas diferentes sem conhecer arrays, árvores, grafos ou detalhes de armazenamento.

Sinais no código/arquitetura

2. Quando usar

3. Quando NÃO usar

4. Estrutura e participantes

5. Procedimento de implementação

  1. Defina a unidade de elemento exposta.
  2. Mantenha cursor/estado no iterador.
  3. Ofereça um iterador por estratégia de percurso quando necessário.
  4. Trate modificação concorrente conforme contrato.
  5. Prefira protocolos nativos da linguagem.

6. Exemplo mental

OrgChart oferece depthFirst() e breadthFirst() como iteradores; o cliente apenas itera empregados.

7. Benefícios esperados

8. Custos e trade-offs

9. Encaixe com Clean Architecture e SOLID

O domínio pode expor coleções por abstrações de leitura/iteráveis sem revelar persistência. Não use Iterator para esconder consultas N+1 custosas.

Regras para a IA:

10. Caminho de refatoração

Extraia quando loops de navegação complexa se repetem e conhecem internals da coleção.

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 ordem, fim da sequência, coleção vazia, múltiplos iteradores e regras de mutação.

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 **Iterator** é 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 Iterator.
2. Compare pelo menos uma alternativa mais simples e um padrão relacionado (Composite, Visitor, Memento).
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: Coleção de árvore precisa ser percorrida sem expor sua estrutura interna.
Objetivo: Fornecer diferentes percursos mantendo o cliente desacoplado da representação.
Restrições: Definir comportamento em mutação concorrente; não reinventar iterador nativo sem necessidade.

15. Critério de aceite

A aplicação de Iterator 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.