Retrospectiva .NET 2021
Caminhando para o final de 2021, é momento de fazer uma retrospectiva do que mudou na nossa stack do .NET !
Tivemos um grande crescimento na adoção de .NET elevando a participação no mercado e consequentemente o número de profissionais requisitados só vem aumentando.
Tudo isso se deve à estabilidade e às inovações da linguagem que em 2021 teve o lançamento de diversas features, então para fazer essa retrospectiva, fiz este post relembrando os principais itens que .NET nos trouxe a partir deste ano !
Cada vez mais o .NET se consolida para oferecer soluções para todas as plataformas !
Então vamos às novidades que apareceram ou foram destaque neste ano:
Tipos Record (registro)
Um dos recursos novos disponibilizados com a versão do C# 9 é o tipo Record.
Este tipo cumpre com algumas funções úteis — é um tipo de referência, mas possui um item que ajudará muitos desenvolvedores, que é a comparação de igualdade entre dois “record”, quando seus campos forem considerados iguais. Além disso, possui uma forma simples e fácil de definir suas propriedades em comparação com uma classe completa.
Saiba mais em: Uma nova feature do C# 9: tipos “Record”. | by Marcio Nizzola | Medium
Tipos de dados DateOnly e TimeOnly !
Quem já programou com .NET e precisou armazenar uma data, sempre se deparou com a necessidade bizarra de ter somente o tipo “DateTime” com a necessidade de armazenar a hora junto, assim como o contrário. Não sei por que demorou tanto para trazer isso, mas finalmente está aqui. Portanto, agora você pode especificar tipos como apenas data ou única hora.
Global Usings
Agora com o C# 10, não precisamos mais mencionar em cada classe os comandos “using” mais comuns, é possível fazer isso de uma única vez em um único arquivo e eles se tornarão acessíveis em toda classe daquele projeto !
MaxBy/MinBy
Os métodos Max e Min já existentes retornam os valores mínimo e máximo em uma coleção, mas e se quisermos obter o objeto de aluno com pontuação máxima em vez de apenas pontuação? Bem, os métodos MinBy e MaxBy fazem exatamente isso. Em vez de emitir o valor máximo da propriedade, agora retorna o objeto que possui a propriedade com valor máximo.
Valores Default ou Métodos em LINQ
Agora podemos definir valores padrão para métodos LINQ OrDefault como FirstOrDefault (), SingleOrDefault () e LastOrDefault (). Por exemplo, temos uma lista de inteiros e aplicamos o método FirstOrDefault a ela de forma que, se nenhum registro corresponder à condição, em vez de retornar 0, podemos retornar qualquer valor inteiro que desejarmos.
Por que não pensaram nisso antes ?
Minimal API
Para mim a melhor coisa rumo á simplificação da criação de API´s, foi o conceito de “Minimal API”, onde podemos criar os métodos da api sem a necessidade de escrever controllers com vários pré-requisitos como as “annotations” indicando se o método era get ou post, ou outros detalhes como as suas rotas.
Vejam meus posts específicos deste tema, onde há maiores detalhes:
O que são Minimal API´s no .NET 6? | by Marcio Nizzola | Nov, 2021 | Medium
Organizando melhor a sua Minimal Api no .NET 6 | by Marcio Nizzola | Dec, 2021 | Medium
File Scoped Namespaces
Mais uma etapa à caminho da simplificação do nosso código, o uso de chaves para delimitar o namespace num arquivo não é mais obrigatório, agora podemos simplesmente escrever o namespace e colocar um ponto e vírgula !
E muito mais
Além dessas melhorias que de fato podemos usar imediatamente em nossos projetos, ainda tem aí o Blazor e Maui que são promessas fortes para ocupar outros nichos onde o C# estava de fora ultimamente.
Outros itens evoluíram também, como o LINQ e o Entity Framework Core, tornando a cada dia uma linguagem muito mais simples e fácil de se utilizar.
Parafraseando o lendário “Macoratti”, vou adaptar a famosa frase que ele citava relativa ao VB: “Eu sei é apenas .NET, mas eu gosto…”