Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 40

Code Modification for C#/.NET Backend Applications

Recommended resources

Olá! Bem-vindo de volta.

Na lição anterior, estabelecemos a base teórica para a geração de código de alta qualidade, focando em "Context Engineering" e na construção de um prompt de requisitos de produto (PRP) abrangente. Aprendemos como pedir por código de forma eficaz, estruturando o objetivo, as regras arquitetônicas, o estilo de código e os limites.

Nesta lição, vamos colocar essa teoria em prática. Nosso foco é o resultado de aprendizagem: Guiar o agente para gerar modificações de código para uma aplicação backend C#/.NET. Vamos explorar como um agente de IA, munido de um bom contexto, traduz um plano em modificações concretas no código, lidando com padrões de backend com os quais você já tem vasta experiência, como injeção de dependência, criação de controllers de API e a camada de serviços.

1. Do Plano à Ação: A Execução do Agente

Uma vez que o agente recebe um prompt rico em contexto e um plano de execução (como o que discutimos na lição anterior), ele não começa a escrever código aleatoriamente. Agentes de codificação avançados operam em modos distintos, sendo o mais poderoso o "modo agente" ou "modo de edição", onde ele pode planejar e executar tarefas de forma autônoma em vários arquivos.

O artigo a seguir detalha um exemplo prático completo de como um agente, como o GitHub Copilot, pode pegar um requisito complexo e implementar uma nova funcionalidade de ponta a ponta em uma aplicação ASP.NET Core.

AI-Powered Development with GitHub Copilot in Visual Studio

Este artigo, 'AI-Powered Development with GitHub Copilot in Visual Studio', demonstra um fluxo de trabalho completo. Vamos focar na seção que mostra a implementação de uma nova camada de dados, que é uma tarefa de backend por excelência.

Estude a seção 'Part 4: Advanced Agent Mode with Planning', especificamente a partir do 'Step 12: Implement Azure Table Storage with Planning'. Observe atentamente os seguintes pontos: O Prompt: Um único prompt de alto nível que descreve o objetivo completo. O Plano: O plano de implementação em Markdown que o agente gera antes de escrever qualquer código. Isso se conecta diretamente ao nosso tópico de planejamento da lição anterior. Os Artefatos Gerados: Analise o código C# que o agente cria: o modelo MoodEntry.cs, a interface IMoodStorageService.cs, a implementação TableStorageService.cs, o MoodController.cs e as atualizações no Program.cs para injeção de dependência e no appsettings.json para configuração.

O que você acabou de ver é um exemplo concreto de como um agente automatiza um fluxo de trabalho de desenvolvimento que você conhece bem:

  • Compreensão do Requisito: O agente interpreta o prompt para entender a necessidade de uma nova camada de dados.
  • Planejamento: Ele decompõe a tarefa em passos lógicos: adicionar pacotes NuGet, criar modelos, serviços, controllers e configurar a injeção de dependência.
  • Execução Coordenada: O agente não trabalha em um arquivo isoladamente. Ele gera e modifica múltiplos arquivos de forma coordenada para garantir que a nova funcionalidade esteja totalmente integrada. A criação da interface IMoodStorageService e sua posterior injeção no MoodController e registro no Program.cs é um excelente exemplo dessa coordenação.

Este processo demonstra que o agente não está apenas "completando código", mas sim aplicando padrões de arquitetura de software para construir uma feature coesa.


2. Demonstração Prática: Adicionando uma Funcionalidade

Ver a teoria e os exemplos em texto é útil, mas uma demonstração em vídeo pode solidificar o entendimento de como essa interação acontece em tempo real.

O vídeo a seguir mostra um desenvolvedor usando o modo de edição do Copilot para adicionar uma funcionalidade de exclusão. Embora o exemplo use .NET MAUI, os princípios de modificar uma camada de serviço e lógica de aplicação são idênticos aos de um backend ASP.NET Core.

How I Code with GitHub Copilot in Visual Studio 2022 to Boost Productivity Everyday

Neste vídeo de James Montemagno, um conhecido evangelista de .NET, ele demonstra como usar o modo de edição do Copilot para implementar uma nova funcionalidade que abrange várias camadas da aplicação.

Assista ao trecho de 09:53 a 12:13. Preste atenção em como um único prompt em linguagem natural é usado para solicitar: Uma mudança na UI (o botão de deletar). A criação de um novo comando na EditCoffeeViewModel. Uma atualização no serviço de dados (CoffeeService) para interagir com o banco de dados.

Este exemplo reforça que o agente é capaz de entender um requisito que tem implicações em diferentes partes do sistema e gerar o código correspondente para cada uma delas, desde a lógica de negócios até o acesso a dados.


3. Garantindo Qualidade e Consistência com Instruções

Gerar código é apenas metade da batalha. O código gerado precisa estar alinhado com as convenções, padrões e regras de arquitetura do seu projeto. Como vimos na lição anterior, é aqui que entra o contexto que fornecemos.

Uma das maneiras mais poderosas de fornecer esse contexto é através de arquivos de instrução persistentes, que agentes como Copilot e Rovo Dev são treinados para consumir.

AI-Powered Development with GitHub Copilot in Visual Studio

Para garantir que o agente sempre siga as melhores práticas do seu projeto C#/.NET, podemos criar um arquivo de instruções detalhado. O artigo que analisamos anteriormente contém um exemplo fantástico de tal arquivo.

Leia a seção 'Step 17: Creating Custom Instructions'. Analise o conteúdo do arquivo .copilot/instructions/project.md. Note como ele define explicitamente padrões para: Arquitetura: ASP.NET Core, Razor Pages, Azure Table Storage. Padrões de Código C#: Uso de async/await, tratamento de erros com try-catch, logging com ILogger e comentários de documentação XML. Design de API: Convenções RESTful e códigos de status HTTP.

Ao criar um arquivo como este (seja AGENTS.md para Rovo ou project.md para Copilot), você está efetivamente "ensinando" ao agente a cultura de engenharia do seu time. Para seus repositórios, você teria um arquivo desses para o backend C#/.NET, outro para o frontend React, e assim por diante, cada um com suas regras específicas.

O Ciclo de Auto-Correção

E se o agente cometer um erro? Agentes avançados não desistem ao primeiro erro de compilação. Eles integram-se ao processo de build para se autocorrigirem.

O agente monitora a saída do compilador. Se um erro como The name 'xyz' does not exist in the current context ou Missing using directive for 'System.Linq' for detectado, ele usará essa informação para tentar corrigir o código que acabou de gerar.

Este ciclo de gerar -> construir -> observar erro -> corrigir é fundamental para a autonomia e a confiabilidade do agente. Sua experiência com os erros do compilador do C# permite entender que essas mensagens são extremamente informativas e fornecem um caminho claro para a correção, algo que o agente pode explorar de forma eficaz. O artigo AI-Powered Development with GitHub Copilot in Visual Studio também aborda isso na seção 'Step 19: Understanding the Build Process Integration'.


4. Conectando ao Ecossistema Atlassian

Até agora, usamos o GitHub Copilot como um excelente análogo para um agente de geração de código. Os princípios são universais. Agora, vamos conectar isso diretamente ao seu objetivo de usar o Atlassian Rovo.

O Rovo foi projetado desde o início para se integrar profundamente com o Jira. O fluxo de trabalho é exatamente o que você idealizou: um ticket no Jira aciona o agente, que então gera o código.

Atlassian Rovo Dev Tutorial 2025 | AI Code Review + Jira Integration for Developers

Este clipe de um tutorial do Rovo Dev mostra o fluxo de ponta a ponta. Embora o código gerado não seja C#, o processo é o que importa: pegar um issue do Jira e transformá-lo em código.

Assista de 08:21 a 10:26. O ponto crucial é a demonstração da capacidade do agente de receber um link de um issue do Jira, entender sua intenção, analisar a base de código existente e, em seguida, gerar a nova funcionalidade.

O resultado final desse processo dentro do ecossistema Atlassian é exatamente o que você busca: rastreabilidade completa desde o requisito até o código.

Atlassian Rovo Dev Integration in Jira for Code Generation
Esta imagem mostra o resultado do trabalho de um agente no ecossistema Atlassian. O Rovo Dev processou uma tarefa do Jira, gerou as modificações de código necessárias e vinculou as alterações diretamente de volta ao issue, fornecendo um ciclo de desenvolvimento claro e auditável.

Conclusão

Nesta lição, vimos como um agente de IA transforma um plano bem estruturado em código C#/.NET funcional e consistente. Passamos da teoria da construção de prompts para a prática da geração de código.

Principais Pontos:

  • Agentes de codificação operam em modos que lhes permitem planejar e executar modificações coordenadas em múltiplos arquivos (Models, Services, Controllers, etc.).
  • O agente utiliza um contexto rico, incluindo arquivos de instrução (AGENTS.md), para gerar código que adere aos padrões de arquitetura e estilo do seu projeto.
  • Um recurso fundamental é o ciclo de auto-correção, onde o agente usa os erros de compilação como feedback para refinar o código gerado.
  • Ferramentas como o Atlassian Rovo são projetadas para integrar esse processo de geração de código diretamente com o fluxo de trabalho do Jira, realizando a visão de automação de ponta a ponta.

Na Próxima Lição

Com uma compreensão sólida de como guiar o agente para o backend, o próximo passo natural é o frontend. Na próxima lição, vamos nos aprofundar no resultado de aprendizagem: Guiar o agente para gerar modificações de código para uma aplicação frontend React/JS. Exploraremos como ele lida com componentes, gerenciamento de estado e integração de API do lado do cliente.