AI News Hub Logo

AI News Hub

Copilot ajuda muito, mas você continua 100% responsável pelo seu código .NET

DEV Community
José Marcos

Ferramentas de IA como o GitHub Copilot mudaram completamente a forma como desenvolvemos software em .NET. Elas aceleram tarefas repetitivas, sugerem soluções e podem gerar blocos inteiros de código em segundos. Mas há uma verdade que muitos desenvolvedores aprendem da pior forma: Usar IA aumenta sua produtividade, mas não elimina sua responsabilidade. Isso significa que, mesmo que o código funcione, você ainda precisa revisar, testar e garantir que tudo está correto, seguro e sustentável. gratuita Quando você começa a usar IA diariamente, tudo parece mais rápido: Menos tempo escrevendo código de boilerplate Respostas instantâneas Soluções "prontas para uso" O problema? Velocidade sem validação é apenas uma forma mais eficiente de cometer erros. IA não entende seu sistema, suas regras de negócio ou riscos legais. Código sugerido pela IA não é confiável por padrão. Exemplo (C# – lógica incorreta para casos de borda) bool IsEven(double n) { return n % 2 == 0; } Console.WriteLine(IsEven(2)); // True Console.WriteLine(IsEven(2.5)); // False (mas talvez você não esperasse double) Correção bool IsEven(int n) { return n % 2 == 0; } Explicação: limitar o tipo de entrada evita resultados inesperados. Exemplo (SQL Injection) string query = $"SELECT * FROM Users WHERE Email = '{email}'"; using (var command = new SqlCommand(query, connection)) { var reader = command.ExecuteReader(); } Correção (query parametrizada) using (var command = new SqlCommand("SELECT * FROM Users WHERE Email = @Email", connection)) { command.Parameters.AddWithValue("@Email", email); var reader = command.ExecuteReader(); } Previna ataques de injeção SQL sempre que usar dados de usuário. Exemplo (embaralhar lista de forma incorreta) var random = new Random(); var shuffled = list.OrderBy(x => random.Next()).ToList();` Funciona, mas não é uniformemente aleatório. Correção (Fisher-Yates shuffle) void Shuffle(IList list) { var rng = new Random(); int n = list.Count; while (n > 1) { n--; int k = rng.Next(n + 1); T value = list[k]; list[k] = list[n]; list[n] = value; } } Exemplo using SomeUnknownLibrary; Antes de aceitar uma biblioteca sugerida pela IA, pergunte: Qual é a licença? Está mantida e atualizada? Posso usar em produção legalmente? Verificar licença compatível (MIT, Apache, etc.) Conferir manutenção e histórico de segurança Preferir pacotes confiáveis do NuGet oficial Exemplo (Entity Framework) var users = dbContext.Users.ToList(); foreach(var user in users) { var orders = dbContext.Orders.Where(o => o.UserId == user.Id).ToList(); } Cada usuário gera uma query → problema de performance. Correção (Include ou batch query) var usersWithOrders = dbContext.Users .Include(u => u.Orders) .ToList(); Exemplo (float/double para valores monetários) double price = 0.1; double tax = 0.2; double total = price + tax; // 0.30000000000000004` Correção (decimal) decimal price = 0.1m; decimal tax = 0.2m; decimal total = price + tax; // 0.3` decimal garante precisão em cálculos financeiros. A IA pode sugerir rotas, acelerar decisões e reduzir esforço. Mas ela não: conhece o destino real responde por falhas lida com consequências Se você tirar as mãos do volante, isso não é automação é negligência. Antes de aceitar qualquer código gerado por IA: Se isso quebrar em produção amanhã, sei exatamente por quê e como corrigir? Se a resposta for não, você ainda não terminou seu trabalho. IA não substitui responsabilidade ela a amplifica. Ela pode tornar você: mais rápido mais produtivo mais eficiente Mas também pode tornar você: mais propenso a erros mais exposto a riscos mais perigoso como desenvolvedor No final, nada mudou: o código é seu.