Minha Jornada com C# e .NET: Redescobrir a Elegância da Microsoft
O retorno às origens (ou quase isso)
Depois de explorar Go e me apaixonar por sua simplicidade, decidi mergulhar em C# e .NET. Confesso que tinha alguns preconceitos - associava a plataforma Microsoft a algo mais engessado e corporativo. Que engano o meu!
Estou estudando C# há algumas semanas e já passei pelos fundamentos: tipos de dados, listas, orientação a objetos e agora estou explorando APIs com ASP.NET Core 8, especialmente as Minimal APIs. A experiência tem sido surpreendentemente refrescante.
C# como linguagem: familiar, mas com suas surpresas
Vindo do Java/Kotlin, a sintaxe do C# me pareceu familiar desde o primeiro momento. Mas o que me chamou atenção foram os detalhes que tornam o código mais limpo e expressivo:
// Propriedades automáticas - que elegância!
public class Produto
{
public int Id { get; set; }
public string Nome { get; set; } = string.Empty;
public decimal Preco { get; set; }
}
// LINQ - funcional que funciona
var produtosCaros = produtos
.Where(p => p.Preco > 100)
.OrderBy(p => p.Nome)
.ToList();
O LINQ me conquistou completamente. Depois de sentir falta das operações funcionais que tinha em Node.js e Kotlin quando migrei para Go, encontrar essas funcionalidades tão bem integradas em C# foi um alívio. A sintaxe é limpa e intuitiva.
ASP.NET Core 8: modernidade que impressiona
Quando comecei a estudar APIs com ASP.NET Core, esperava algo pesado como os frameworks mais antigos. As Minimal APIs me surpreenderam positivamente:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
// Uma API REST em poucas linhas
app.MapGet("/produtos", () =>
{
return new List<Produto>
{
new() { Id = 1, Nome = "Notebook", Preco = 2500.00m },
new() { Id = 2, Nome = "Mouse", Preco = 50.00m }
};
});
app.MapPost("/produtos", (Produto produto) =>
{
// Lógica para salvar
return Results.Created($"/produtos/{produto.Id}", produto);
});
app.Run();
A simplicidade me lembrou da abordagem que apreciei no Go, mas com toda a robustez e tooling que o ecossistema .NET oferece. É o melhor dos dois mundos.
O ecossistema .NET: maduro sem ser ultrapassado
Uma das coisas que mais me impressionou foi descobrir como o .NET evoluiu. Não é mais aquela plataforma Windows-only que eu imaginava. É multiplataforma, open source e com uma comunidade vibrante.
O NuGet se mostrou um gerenciador de pacotes eficiente - não tão vasto quanto o npm, mas com qualidade consistente. E a documentação da Microsoft? Simplesmente exemplar. Raramente encontro docs tão claras e bem organizadas.
Performance e produtividade que impactam
Vindo do Node.js, estava acostumado com boa performance em I/O. O ASP.NET Core não fica atrás - na verdade, em muitos benchmarks supera outras tecnologias que já usei. E o hot reload durante o desenvolvimento? Mudança no código e a API já está atualizada instantaneamente (e aí, meu javinha??).
// Injeção de dependência nativa e elegante
builder.Services.AddScoped<IProdutoService, ProdutoService>();
app.MapGet("/produtos/{id}", (int id, IProdutoService service) =>
{
var produto = service.BuscarPorId(id);
return produto is not null ? Results.Ok(produto) : Results.NotFound();
});
A injeção de dependência funciona de forma tão natural quanto no Spring Boot, mas sem a magia excessiva das anotações. É explícito o suficiente para entender o que está acontecendo.
Orientação a objetos que faz sentido
Depois de trabalhar com linguagens mais funcionais e Go com sua abordagem minimalista, voltar para OO em C# foi interessante. A linguagem oferece recursos que tornam a programação orientada a objetos mais elegante:
// Records para dados imutáveis
public record ProdutoDto(int Id, string Nome, decimal Preco);
// Pattern matching moderno
var resultado = produto switch
{
{ Preco: > 1000 } => "Produto caro",
{ Preco: < 50 } => "Produto barato",
_ => "Preço regular"
};
Esses recursos modernos mostram que C# não ficou parado no tempo. A linguagem evoluiu incorporando o melhor de paradigmas diferentes.
O que vem pela frente
Estou apenas no começo dessa jornada com C#/.NET, mas já posso ver o potencial. A plataforma oferece um equilíbrio interessante entre produtividade, performance e robustez corporativa.
Meus próximos passos incluem explorar Entity Framework, Blazor e talvez alguns projetos com microserviços usando .NET. A sensação é de ter encontrado uma ferramenta que une o melhor dos mundos que já explorei.
Reflexões finais
C# e .NET se juntaram ao meu toolkit não como substitutos, mas como complementos valiosos. Para projetos que precisam de rapidez no desenvolvimento, robustez corporativa e performance consistente, a plataforma Microsoft oferece uma proposta muito sólida.
Se você, como eu, tinha preconceitos com o ecossistema Microsoft, recomendo dar uma chance. O .NET de hoje é muito diferente do que era há alguns anos, e as Minimal APIs tornam o desenvolvimento web surpreendentemente ágil e prazeroso.
A jornada de aprender novas tecnologias continua, e C# provou ser uma adição valiosa ao arsenal. Cada linguagem e framework traz sua perspectiva única para resolver problemas, e a diversidade só nos torna desenvolvedores mais completos.