IA: refatoração e extração
O curso compara o Layer Contract de um app Rails com os próprios arquivos do app. Lá, services e query objects devolvem Result = Data.define(...) por meio de um método de classe self.call. O curso começa auditando três controllers, que já são enxutos. Depois lê um service de responsabilidade única, um service que orquestra outros objetos dentro de uma transação e query objects que respondem a perguntas entre domínios. As últimas aulas tratam de pedir a uma ferramenta de IA uma extração que siga as convenções do app e de revisar o resultado antes de publicar.
O que você vai aprender
- ✓Auditar actions de controller separando orquestração HTTP de decisões de negócio
- ✓A convenção Result = Data.define e self.call em services e query objects
- ✓Services de responsabilidade única com dependência injetada e rescue delimitado
- ✓Orquestração de outros objetos numa transação, com pagamento de XP idempotente
- ✓Namespace de query objects definido pela pergunta de negócio
- ✓Prompts de extração especificados e revisão da saída da IA contra as convenções do app
O que extração significa neste app
O MEMORY.md deste projeto descreve a arquitetura como um Layer Contract. A lógica de negócio fica em services, que devolvem Result = Data.define(...). Perguntas só de leitura, que cruzam models, ficam em query objects, que devolvem o mesmo tipo de Result. Os models guardam validações, scopes e…
Ler a aula completa grátis →Currículo
7 aulasO que extração significa neste app
Define extração a partir do Layer Contract do app e do formato Result e self.call da maioria dos services.
Auditando controllers deste app atrás de candidatos a extração
Audita três controllers linha a linha e conclui que cada um já delega suas decisões a services.
A anatomia de um service bem extraído
Lê o FetchSiteIconService: contrato Result, constantes nomeadas, cliente HTTP injetado, regra de ícones em array e rescue delimitado.
Orquestração e composição em services
Mostra como o SubmitQuizService calcula a nota e delega tentativa, XP e desbloqueios a outros objetos numa transação.
Query objects entre domínios na prática
Explica por que LeaderboardQuery e UserGamificationQuery ficam em Enrollment e como compõem policies e outras queries.
Pedindo uma extração a uma IA
Compara prompts de extração vagos e especificados e revisa a saída da IA contra a convenção Result do app.
Juntando tudo: da auditoria à extração
Junta auditoria, leitura, prompt e revisão, e propõe um desafio de extrair a conta de progresso de nível.