image

Access unlimited bootcamps and 650+ courses

50
%OFF
Article image
Alexandre Lima
Alexandre Lima02/07/2025 13:19
Share
Savegnago - Lógica de ProgramaçãoRecommended for youSavegnago - Lógica de Programação

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.

    image

    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.

    Share
    Recommended for you
    Randstad - Análise de Dados
    BairesDev - Machine Learning Training
    Savegnago - Lógica de Programação
    Comments (1)
    DIO Community
    DIO Community - 02/07/2025 15:33

    Alexandre, sua jornada com C# e .NET foi muito bem detalhada e trouxe uma perspectiva fascinante, especialmente para quem tem uma visão pré-concebida da plataforma Microsoft. Você desconstruiu os mitos de uma forma clara e didática, e a sua experiência com as Minimal APIs no ASP.NET Core foi reveladora.

    O que mais me impressionou foi sua análise do LINQ e como ele, aliado à elegância da linguagem C#, permite que você escreva código mais limpo e funcional. Essa combinação de simplicidade e robustez realmente torna o C# uma opção muito atraente, especialmente para quem vem de outras linguagens, como Go e Kotlin.

    Sua visão sobre a evolução do .NET e a importância da integração de ferramentas como NuGet e o desempenho do ASP.NET Core também foi bastante elucidativa.

    Quais desafios e vantagens você visualiza ao aplicar o .NET nesse contexto?

    Recommended for youSavegnago - Lógica de Programação