Olá pessoal, já ouviram falar de Syntactic Sugar ?
Syntactic Sugar, também usado como Syntax Sugar, é um termo utilizado para quando uma linguagem de programação oferece uma forma mais fácil de ser lida e escrita.
Usar syntactic sugar refere-se a escrever um código de forma alternativa ao modo tradicional, com a finalidade de escrever menos código e torná-lo mais expressivo.
O que acontece é que nem sempre conhecemos todos os modos de se escrever em uma linguagem e podemos nos deparar com um código “estranho”.
Vou abordar dois exemplos de Syntactic Sugar em C#.
Primeiro exemplo:
O que está acontecendo aqui?
int? numero = null; numero = 12;
Colocar um “?” no final de um tipo significa dizer que ele é um “Nullable Type”.
Nullable Type são instâncias de System.Nullable<T> struct. Ou seja, um int por exemplo pode receber valores entre -2147483648 a 2147483647 mas nunca um “null”, um int? além de receber valores entre -2147483648 a 2147483647 também pode receber “null”.
Em algum determinado momento sua variável do tipo int poderia receber um dado nulo “null”, por exemplo, ao receber valores de uma tabela de um banco de dados onde a coluna estivesse vazia “null”.
Se você fizer isso terá um erro:
int numero = null; numero = 12; //Cannot convert null to 'int' because it is a non-nullable value type
Usar “?” para descrever um “Nullable Type” é uma forma reduzida, pois originalmente é feito assim:
System.Nullable<int> numero = null; numero = 12;
Legal, agora já aprendemos o que é um “Nullable Type” e como declarar um tipo desse de forma reduzida.
Segundo exemplo:
O que está acontecendo aqui?
string NomePrincipal = null; string NomeAlternativo = "Fabrizio"; string Nome = NomePrincipal ?? NomeAlternativo;
Afinal o que são estes dois pontos de interrogação? (??)
O código acima é para testar se a variável NomePrincipal não é nula (null) e se caso for, então atribuir a variável NomeAlternativo para a variável Nome.
Este é mais um exemplo de syntactic sugar no C#, menos código escrito e mais simples de entender. O que está acontecendo no código acima poderia ser escrito assim:
string NomePrincipal = null; string NomeAlternativo = "Fabrizio"; string Nome = NomePrincipal != null ? NomePrincipal : NomeAlternativo;
Agora deu para entender?
No exemplo acima utilizamos um operador ternário. O operador ternário já é uma forma de escrever menos código, porém não é syntactic sugar.
Note que o primeiro exemplo de código exibido não é um operador ternário, apenas foi escrito de uma forma “abreviada” (isto é syntactic sugar).
string Nome = NomePrincipal ?? NomeAlternativo;
Note também que usar o “??” é valido apenas para testar se um valor é “null”, não pode ser aplicado para outros tipos de validações.
Veja como ficaria se estivéssemos escrevendo da forma mais básica:
string NomePrincipal = null; string NomeAlternativo = "Fabrizio"; string Nome; if (NomePrincipal != null) { Nome = NomePrincipal; } else { Nome = NomeAlternativo; }
Muito mais código, maior o tempo para ler e compreender.
Vamos aumentar as possibilidades? Veja só:
string NomePrincipal = null; string NomeAlternativo = null; string NomeQualquer = null; string Nome = NomePrincipal ?? NomeAlternativo ?? NomeQualquer ?? "Sem Nome"; // Resultado: Nome = "Sem Nome"
Podemos usar quantos “??” quisermos em nosso código, experimente escrever isso da forma mais básica, seria chato né?
Usar os benefícios do syntactic sugar é legal, facilita nosso entendimento ao ler e agiliza na hora de escrever reduzindo o tempo de codificação.