.NET

12 mai, 2023

Novidades do C# 11: alertas para nomes de classes em minúsculo

Publicidade

As palavras-chave/keywords do C# são identificadores especiais do ponto de vista do compilador dessa linguagem, estando normalmente associadas a implementações básicas como declarações de estruturas, desvios condicionais e manipulação de valores. Uma característica comum a todas as keywords está no fato de que a escrita das mesmas sempre se dá em letras minúsculas, devendo-se ressaltar ainda que instruções em C# são case-sensitive por padrão.

Uma relação completa das palavras-chave previstas atualmente para o C#pode ser encontrada no link:

https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/

Por se tratar de elementos de uso reservado, não podemos empregar palavras-chaves em nomes de classes, métodos, variáveis e outras construções. E o C# 11 agora vai além disso, gerando alertas de compilação/build para classes cujo nome seja formado apenas por caracteres minúsculos. A esta nova capacidade foi dado o nome de Warning wave 7, um tipo de alerta identificado pelo código CS8981 e cuja utilização demonstrei recentemente em uma live no Canal .NET (que pode ser assistida gratuitamente no YouTube e inclui outros recursos do C# 11):

O objetivo de tal novidade está em evitar que nomes de classes conflitem com prováveis novas keywords, partindo do pressuposto que estas últimas sempre serão formadas por caracteres minúsculos. Como exemplo podemos tomar as classes test, assert e validator, apresentadas na listagem a seguir:

Mesmo com seus nomes formados apenas por letras minúsculas, esses tipos podem ser utilizados normalmente em uma aplicação .NET. É o que demonstra a próxima listagem:

Cujo resultado da execução está na imagem seguinte:

Os alertas produzidos podem ser visualizados a partir do Visual Studio 2022:

Ou até mesmo durante o processo de compilação de um projeto via .NET CLI, como no exemplo a seguir em que se fez uso do Windows Terminal:

Este exemplo também foi disponibilizado no GitHub:

https://github.com/renatogroffe/CSharp11-WarningWave7

*O conteúdo deste artigo é de responsabilidade do(a) autor(a) e não reflete necessariamente a opinião do iMasters.