Domine C# 13 em 90 Min: Dicas para Código Cross-Platform

Neste tutorial, exploraremos dicas práticas para compartilhar código entre diferentes plataformas utilizando os recursos do C# 13O que é C# 13 e por que aprender em 90 minutosO que é C# 13 e por que aprender em 90 minutosExplore as inovações do C# 13 e melhore a legibilidade do seu código. Este tutorial prático de 90 minutos oferece dicas essenciais para desenvolvedores .NET.. É fundamental criar soluções que sejam facilmente reutilizáveis, simplificando a manutenção e facilitando a evolução do projeto. Veremos abordagens de organização do códigoBoas práticas de organização do código em C# 13Boas práticas de organização do código em C# 13Domine as melhores práticas de organização em C# 13. Aprimore a legibilidade e o desempenho do seu código com dicas práticas e exemplos reais. e técnicas que tornam o projeto verdadeiramente cross-platform, seja para aplicações desktop, web ou dispositivos móveis.

Visão Geral do Compartilhamento de Código🔗

Quando falamos em compartilhar código entre plataformas, queremos dizer que a maior parte da lógica de negócios (e, em alguns casos, até a lógica de interfaceTrabalhando com interfaces e coleções aprimoradas em C# 13Trabalhando com interfaces e coleções aprimoradas em C# 13Descubra como as implementações padrão em interfaces e coleções aprimoradas do C# 13 otimizam a criação de códigos modulares, seguros e performáticos.) deve ser escrita uma única vez e executada em diversos ambientes (Windows, macOS, Linux, iOS, Android etc.). Isso exige uma atenção especial na arquitetura e em como estruturamos os projetos.

Algumas estratégias comuns incluem:

A seguir, vamos detalhar cada uma dessas abordagens para que você aplique no seu dia a dia de desenvolvimento com C# 13O que é C# 13 e por que aprender em 90 minutosO que é C# 13 e por que aprender em 90 minutosExplore as inovações do C# 13 e melhore a legibilidade do seu código. Este tutorial prático de 90 minutos oferece dicas essenciais para desenvolvedores .NET..

Bibliotecas de Classes Compartilhadas🔗

Uma das maneiras mais tradicionais de compartilhar código em .NET é através de bibliotecas de classesBoas práticas de performance e memória para jogos em C# 13Boas práticas de performance e memória para jogos em C# 13Descubra técnicas para otimizar desempenho e uso de memória em jogos com C# 13, utilizando structs, pooling e melhores práticas do GC. (ClassBoas práticas de performance e memória para jogos em C# 13Boas práticas de performance e memória para jogos em C# 13Descubra técnicas para otimizar desempenho e uso de memória em jogos com C# 13, utilizando structs, pooling e melhores práticas do GC. Libraries). Esses projetos podem ser:

1. .NET Standard Library – Permitindo compatibilidade com projetos .NET Framework, .NET Core e versões móveis do XamarinExperiência móvel com Xamarin vs .NET MAUI no C# 13Experiência móvel com Xamarin vs .NET MAUI no C# 13Descubra a evolução do desenvolvimento móvel com .NET MAUI e C# 13. Conheça as vantagens, produtividade e performance que transformam a criação de apps., por exemplo.

2. .NET (Universal) – Voltados ao .NET 5+ e .NET 6+, que também suportam C# 13O que é C# 13 e por que aprender em 90 minutosO que é C# 13 e por que aprender em 90 minutosExplore as inovações do C# 13 e melhore a legibilidade do seu código. Este tutorial prático de 90 minutos oferece dicas essenciais para desenvolvedores .NET. e facilitam a adoção de recursos mais modernos.

Vantagens

  • Separação clara de responsabilidades: o código compartilhado permanece isolado em uma biblioteca.
  • Reutilização simplificada: basta referenciar a biblioteca em diferentes projetos.
  • Facilidade de manutenção: atualizações podem ser feitas em um único local.

Pontos de atenção

  • Fique atento às diferenças de versões do .NET. Se ainda houver necessidade de suportar projetos .NET Framework antigos, opte pelo .NET Standard. Caso contrário, foque em bibliotecas .NET 6 ou superior.

Shared Projects🔗

O Shared Project é uma estratégia que possibilita compartilhar arquivos de código-fonte diretamente entre múltiplos projetos, sem a criação de uma biblioteca intermediária. Nesse modo, cada projeto compila seu próprio IL (Intermediate Language), incluindo os arquivos compartilhados.

Exemplo prático:

1. Crie um projeto do tipo Shared Project (por exemplo, MeuProjeto.Shared).

2. Adicione as classesBoas práticas de performance e memória para jogos em C# 13Boas práticas de performance e memória para jogos em C# 13Descubra técnicas para otimizar desempenho e uso de memória em jogos com C# 13, utilizando structs, pooling e melhores práticas do GC. e métodos que deseja compartilhar.

3. Referencie esse projeto em diversas aplicações (desktop, web etc.).

Quando usar: se você deseja que cada aplicativo seja compilado com o mesmo conjunto de arquivos sem necessariamente criar um assembly dedicado. É útil quando cada plataforma pode ter divergências mínimas no código-fonte e você quer aproveitar parte da lógica em comum.

Atenção: embora prático, esse modelo pode dificultar a manutenção de arquivos em comum se o projeto crescer muito. Em geral, separe bem o que deve ser compartilhado em um projeto que realmente faça sentido sem alterar a lógica de compilação.

Multi-Targeting🔗

O Multi-Targeting é um recurso que permite que um único projeto seja compilado para vários targets (como .NET 6, .NET Standard 2.1, etc.). Essa abordagem é útil para quem precisa manter compatibilidade com diferentes versões de runtime ou frameworks, mas deseja centralizar o desenvolvimento. No arquivo de projeto (.csproj), pode-se especificar diferentes TargetFrameworks:

<PropertyGroup>
  <TargetFrameworks>net6.0;netstandard2.1</TargetFrameworks>
</PropertyGroup>

Dessa forma, o mesmo projeto poderá compilar duas (ou mais) variações do assembly, permitindo que aplicações antigas e novas utilizem o mesmo código.

Dica prática: sempre defina a raiz do projeto para o target de uso predominante, adicionando suporte secundário para frameworks necessários a compatibilidade.

Diretivas Condicionais🔗

Em cenários mais avançados, você pode usar diretivas condicionais (#if, #elif, #endif) para customizar o comportamento do seu código em diferentes plataformas:

public class ArquivoPlataforma
{
    public string ObterDiretorioRaiz()
    {
#if WINDOWS
        return "C:\\MeuDiretorio";
#elif LINUX
        return "/home/user/MeuDiretorio";
#else
        return "DiretorioPadrao";
#endif
    }
}

As diretivas condicionais permitem que um único arquivo contenha variações de código específicas para cada plataforma, evitando a criação de inúmeras versões duplicadas da mesma classe.

Atenção: é importante não exagerar no uso de diretivas, pois isso pode afetar a legibilidade e complicar a manutenção do seu código.

Recursos de C# 13 que Facilitam o Compartilhamento🔗

Para que o código compartilhado seja manutenível e eficiente, algumas funcionalidades do C# 13O que é C# 13 e por que aprender em 90 minutosO que é C# 13 e por que aprender em 90 minutosExplore as inovações do C# 13 e melhore a legibilidade do seu código. Este tutorial prático de 90 minutos oferece dicas essenciais para desenvolvedores .NET. merecem destaque:

1. Pattern matching aprimoradoTratamento de exceções e logs avançados em C# 13Tratamento de exceções e logs avançados em C# 13Aprenda técnicas avançadas de tratamento de exceções e logs em C# 13 para melhorar a performance e manutenção do seu software.: ao escrever lógica de negócio para diferentes plataformas, o pattern matchingDesenvolvimento multiplataforma com .NET MAUI e C# 13Desenvolvimento multiplataforma com .NET MAUI e C# 13Explore as novidades do C# 13 e crie apps multiplataforma com .NET MAUI neste tutorial prático, otimizado para desempenho e legibilidade. auxilia a tratar casos específicos de forma clara.

2. Null-checkingRecursos avançados de null-checking no C# 13Recursos avançados de null-checking no C# 13Aprenda a dominar o null-checking em C# 13 com técnicas avançadas e exemplos práticos que garantem código seguro, legível e performático. automático: menor risco de exceções em cenários heterogêneos onde algumas plataformas podem produzir dados nulos ou incompletos.

3. Global usingUso aprimorado de 'global using' e importações simplificadas no C# 13Uso aprimorado de 'global using' e importações simplificadas no C# 13Explore as inovações do C# 13: aprenda a utilizar global using para reduzir repetições e modernizar seu projeto com eficiência e clareza.: facilita a inclusão de namespacesIntrodução aos principais namespaces e bibliotecas padrãoIntrodução aos principais namespaces e bibliotecas padrãoExplore um tutorial prático sobre C# 13, descobrindo os namespaces e bibliotecas da BCL. Melhore a performance e legibilidade do seu código. comuns, reduzindo duplicação de código e tornando o compartilhamento mais limpo.

Organização de Pastas e Nome de Arquivos🔗

Independente da abordagem adotada, ter uma boa organização de pastas é fundamental. Seguem algumas dicas rápidas:

Essa organização torna mais intuitivo localizar a lógica de cada plataforma, facilitando a manutenção e o trabalho em equipes maiores.

Exemplos de Estrutura de Projeto🔗

A tabela abaixo mostra um exemplo simplificado de como você pode organizar uma solução cross-platform:

Projeto ou PastaDescrição
MeuProjeto.SharedCódigo compartilhado (lógica de negócio, serviços, modelos).
MeuProjeto.DesktopAplicação desktop específica (WinForms, WPF, etc.).
MeuProjeto.WebAplicação web em ASP.NET Core.
MeuProjeto.MobileAplicação móvel (Xamarin, .NET MAUI).
TestesProjetos de teste unitário que usam o código de MeuProjeto.Shared.

Nesse cenário, MeuProjeto.Shared pode ser um projeto compartilhado ou .NET Standard (dependendo das suas necessidades), enquanto cada aplicação final referencia esse módulo para reaproveitar o core da lógica.

Recomendações Finais🔗

Conclusão

O compartilhamento de código em C# 13O que é C# 13 e por que aprender em 90 minutosO que é C# 13 e por que aprender em 90 minutosExplore as inovações do C# 13 e melhore a legibilidade do seu código. Este tutorial prático de 90 minutos oferece dicas essenciais para desenvolvedores .NET. oferece um conjunto poderoso de ferramentas e práticas que podem maximizar a eficiência e reduzir custos de manutenção. Ao estabelecer uma arquitetura bem planejada e adotar técnicas como bibliotecas de classesBoas práticas de performance e memória para jogos em C# 13Boas práticas de performance e memória para jogos em C# 13Descubra técnicas para otimizar desempenho e uso de memória em jogos com C# 13, utilizando structs, pooling e melhores práticas do GC., Shared Projects, Multi-Targeting e diretivas condicionais, você cria soluções robustas e escaláveis, prontas para rodar em diversas plataformas com o mínimo de retrabalho.

Lembre-se de polir sua estratégia de organização e aproveitar ao máximo as novidades de C# 13O que é C# 13 e por que aprender em 90 minutosO que é C# 13 e por que aprender em 90 minutosExplore as inovações do C# 13 e melhore a legibilidade do seu código. Este tutorial prático de 90 minutos oferece dicas essenciais para desenvolvedores .NET. para manter sua base de código limpa, performática e fácil de evoluir. Assim, você estará no caminho certo para oferecer produtos consistentes em qualquer ambiente, cumprindo o objetivo de “Dominar as novidades do C# 13O que é C# 13 e por que aprender em 90 minutosO que é C# 13 e por que aprender em 90 minutosExplore as inovações do C# 13 e melhore a legibilidade do seu código. Este tutorial prático de 90 minutos oferece dicas essenciais para desenvolvedores .NET. em 90 min; exemplos práticos elevam legibilidade e desempenho do seu código.”

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo

Artigos Relacionados