DEV Community

José Marcos
José Marcos

Posted on

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

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.

A ilusão da produtividade 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.
Ela apenas prevê o que o código parece correto.
E "parece correto" nem sempre significa é correto.

1. Validar tudo que a IA gera

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)
Enter fullscreen mode Exit fullscreen mode

Correção

bool IsEven(int n)
{
    return n % 2 == 0;
}
Enter fullscreen mode Exit fullscreen mode

Explicação: limitar o tipo de entrada evita resultados inesperados.

2. Garantir segurança

Exemplo (SQL Injection)

string query = $"SELECT * FROM Users WHERE Email = '{email}'";
using (var command = new SqlCommand(query, connection))
{
    var reader = command.ExecuteReader();
}
Enter fullscreen mode Exit fullscreen mode

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();
}
Enter fullscreen mode Exit fullscreen mode

Previna ataques de injeção SQL sempre que usar dados de usuário.

3. Entender o que você está usando

Exemplo (embaralhar lista de forma incorreta)

var random = new Random();
var shuffled = list.OrderBy(x => random.Next()).ToList();`
Enter fullscreen mode Exit fullscreen mode

Funciona, mas não é uniformemente aleatório.

Correção (Fisher-Yates shuffle)

void Shuffle<T>(IList<T> 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;
    }
}
Enter fullscreen mode Exit fullscreen mode

4. Assumir responsabilidade legal e ética

Exemplo

using SomeUnknownLibrary;
Enter fullscreen mode Exit fullscreen mode

Antes de aceitar uma biblioteca sugerida pela IA, pergunte:

  • Qual é a licença?
  • Está mantida e atualizada?
  • Posso usar em produção legalmente?

Abordagem responsável

  • Verificar licença compatível (MIT, Apache, etc.)
  • Conferir manutenção e histórico de segurança
  • Preferir pacotes confiáveis do NuGet oficial

5. Evitar problemas de performance (N+1 queries)

Exemplo (Entity Framework)

var users = dbContext.Users.ToList();
foreach(var user in users)
{
    var orders = dbContext.Orders.Where(o => o.UserId == user.Id).ToList();
}
Enter fullscreen mode Exit fullscreen mode

Cada usuário gera uma query → problema de performance.

Correção (Include ou batch query)

var usersWithOrders = dbContext.Users
    .Include(u => u.Orders)
    .ToList();
Enter fullscreen mode Exit fullscreen mode

6. Lidar com dinheiro e precisão

Exemplo (float/double para valores monetários)

double price = 0.1;
double tax = 0.2;
double total = price + tax; // 0.30000000000000004`
Enter fullscreen mode Exit fullscreen mode

Correção (decimal)

decimal price = 0.1m;
decimal tax = 0.2m;
decimal total = price + tax; // 0.3`
Enter fullscreen mode Exit fullscreen mode

decimal garante precisão em cálculos financeiros.

IA é copiloto, não piloto

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.

Regra prática

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.

Conclusão

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.
as decisões são suas.
as consequências também são suas.

Top comments (0)