Fala devs, tranquilidade?? Comigo está tudo bem e dessa vez estou com um novo artigo com um tema superbacana.
Todos sabemos que se manter atualizado sobre a tecnologia no qual trabalhamos é muito importante, sabendo disso pegue seu café que hoje vamos falar sobre as novidades CONFIRMADAS do C# 10!
A um tempo atrás eu escrevi um artigo mostrando as novidades do C# 9, que vieram diretamente com o .NET 5, convido você a ler ou reler, este artigo foi revisado e atualizado para as mudanças que entraram em vigor (ele descrevia algumas alterações que não tinham entrado em vigor!).
…
Show me the code!
Sem mais delongas vamos então para as alterações que foram realmente confirmadas e estarão em vigor no C# 10.
Esta que está prevista para vir junto com o .NET 6 em 9 de novembro traz atualizações que podem (e vão) ser muito uteis no dia a dia de qualquer desenvolvedor.
Hoje vou demonstrar as seguintes alterações.
- Global Usings
- File-Scoped Namespaces
- Null Parameter Checking
- Required Properties
- Field Keyword
Bora lá!
…
Global Usings
Uma das features que eu mais gostei no C# 10 e a possibilidade de se utilizar usings de forma global.
Se você já trabalhou em grandes projetos ou em projetos que utilizam muitos pacotes externos sabe o quão chato é ter que ficar importando bibliotecas para cada classe que as usam, mais chato ainda quando são as mesmas bibliotecas de uso comum entre elas, como por exemplo System.Collection.Generics ou System.Linq essas bibliotecas são algumas de muitas que estão presentes no dia a dia de qualquer desenvolvedor .NET.
Pensando nisso o C# 10 nos trouxe os imports globais, que nos dá a possibilidade de importar uma única vez cada biblioteca no projeto!
Para isso basta apenas usar a palavra-chave global antes de realizar o using.
E então quando precisar dessas bibliotecas é só importar a classe de usings!
Assim, a classe UseImports.cs tem todos os using’s globais da classe Usings.cs.
…
File-Scoped Namespaces
Outra novidade confirmada no C# 10 é a possibilidade de utilizar uma namespace para um arquivo todo ao invés de se utilizar um bloco {} para isso.
Namespaces no formato normal
File-Scoped Namespace
Acho útil em aplicações super pequenas que não ultrapasse 5~6 classes.
Porém o principal objetivo dessa feature na minha visão é deixar o código mais limpo, visto que remove um bloco {} no meio arquivo.
…
Null Parameter Checking
Essa alteração eu achei sensacional, basicamente agora você pode verificar se o parâmetro passado para uma função é null com a menor quantidade de código possível, isso utilizando (!!) em frente do nome do parâmetro.
Forma antiga de realizar a verificação.
Agora imagine se seu método tivesse 4, 5 ou mais parâmetros, você teria que escrever uma quantidade considerável de código para poder realizar a verificação de cada parâmetro.
Com a forma nova basta adicionar (!!) em frente ao nome do parâmetro e o C# já irá realizar a verificação!
Forma nova de realizar a verificação.
Essa alteração vai reduzir uma quantidade considerável de código, deixando muito mais limpo os métodos e validações!
…
Required Properties
O C# 9 nos trouxe as record class, classes que são específicas para serem utilizadas como modelos de dados, nos dando possibilidade de manipular os dados dentro do objeto mais facilmente.
Agora no C# 10 focando nas record class foi adicionado as required properties.
Elas basicamente indicam que uma propriedade precisar ser iniciada ao instanciar o objeto (requerida) somente utilizando a palavra required atras do tipo da propriedade.
Para demonstrar isso tenho o seguinte exemplo, uma record class Product no qual suas propriedades estão marcadas como init, ou seja, só podem ser atribuídas no construtor.
E logo após uma classe Order que tem uma lista de Products, porém, se não for passado o valor para alguma das propriedades ao instanciar Product, esse valor será null!
Já com o C# 10 basta adicionar a palavra-chave required atras da propriedade no qual queremos que seja obrigatório passar um valor ao instancia – la.
Se o valor não for passado, irá gerar um erro de compilação!
…
Field Keyword
O C# vem evoluindo ao longo dos anos, e o time de desenvolvimento da linguagem vem focando cada vez mais em deixar o código limpo e mais fácil de se entender.
Um dos cenários mais comuns ao se trabalhar com entidades é ter a necessidade de manipular os dados antes de construir o objeto, o que é possível utilizando os construtores, porém dependendo da quantidade de propriedades que você recebe em um construtor pode acabar ficando grande demais.
Para auxiliar nessa questão o C# 10 adicionou a palavra-chave field, no qual você gera um backdoor onde pode manipular o valor antes de atribui-lo a propriedade.
No exemplo abaixo eu adiciono 5% ao valor antes de atribuir a propriedade Price.
Você também pode usar em getters e setters de propriedades diretamente, exemplo.
Dessa forma você consegue manipular o valor de forma simples e elegante!
…
Conclusão
No artigo de hoje vimos as novidades já confirmadas no C# 10 que chegará em novembro junto com o .NET 6! Essas novas features vão auxiliar e muito no dia a dia dos desenvolvedores principalmente deixando o código mais limpo, legível e simples!
Também foram adicionadas algumas atualizações de performance que você pode acompanhar no link oficial das atualizações da linguagem.
Link de atualizações oficial da linguagem:
https://github.com/dotnet/csharplang/blob/main/Language-Version-History.md
Referências das informações
https://github.com/dotnet/csharplang https://medium.com/young-coder/a-closer-look-at-5-new-features-in-c-10-f99738b0158e https://medium.com/young-coder/c-10-3-candidate-features-that-could-make-the-final-cut-3b46f4a62284 https://www.daveabrock.com/2021/05/23/dotnet-stacks-50/
Agradeço a atenção e bons estudos!!!!!
Caso precise entrar em contato, me mande uma mensagem aqui.