[Delphi Rio] Uma grande novidade: declaração de variáveis inline

Olá, pessoal!
Antes de iniciar a nova série de artigos, pretendo divulgar, aos poucos, algumas novidades do Delphi Rio, que será lançado em breve. Diga-se de passagem: são mudanças interessantes! Para iniciar, apresento-lhes um novo recurso na linguagem Delphi, que nos permite declarar uma variável em qualquer local do código.

Introdução à variáveis inline

A partir da versão 10.3 (Rio), será possível declarar uma variável após o bloco begin-end, ou seja, a declaração de variáveis na seção var não será mais obrigatória. Essa característica é chamada de inline, que, ao pé da letra, traduz-se como “na linha”.

Sendo assim, leitores, o código abaixo passa a ser válido:

Além disso, este novo recurso de declaração também possibilita a inicialização de variáveis:

Variáveis declaradas dentro de um bloco de código só estarão disponíveis naquele escopo. Logo, uma variável declarada dentro de um bloco begin-end é limitada apenas à esse bloco, como no exemplo abaixo:

E o gerenciamento de memória?

Pois bem, variáveis de tipos de dados “gerenciados” pelo compilador (como strings, Interfaces e records) serão liberadas automaticamente ao término do escopo no qual elas foram declaradas. No exemplo a seguir, a variável do tipo de Interface é descartada após o begin-end:

Outra novidade também deste recurso é a inferência de tipos. Ao omitir o tipo de dado de uma variável, o compilador irá inferir o tipo com base no valor que a variável recebeu:

No código acima, vale um adendo: o compilador irá usar o “maior tipo” mais próximo como dedução. Neste caso, a variável Linha será do tipo integer. Caso o desenvolvedor queira um tipo mais restrito, como shortint ou smallint, deverá declará-lo explicitamente.

Variáveis inline em loops

Talvez, uma das maiores vantagens deste recurso de inline é a possibilidade de dispensar a declaração de variáveis que servem como contadores em estruturas for. Dessa forma, a variável poderá ser declarada na própria linha do for, lembrando, claro, que essa variável não estará disponível após o laço. Veja o exemplo:

Conclusão

Todos estes recursos dividiram a comunidade Delphi. Muitos gostaram, enquanto outros, não. Eu, particularmente, acredito que só temos a ganhar com a adição dessas novas features, desde que sejam utilizadas visando a qualidade do código.

Ao meu ver, essa nova feature da linguagem traz as seguintes vantagens:

  • Reduz a quantidade de variáveis na seção var, principalmente no caso de contadores em estruturas for;
  • Melhora a expressividade do código, uma vez que determinadas variáveis só serão declaradas e utilizadas dentro de um escopo específico;
  • Reduz linhas de código em função da inicialização de variáveis e inferência de tipos.

Porém, deixo também a minha recomendação: use este recurso com moderação! Em métodos complexos, várias variáveis espalhadas no código podem mais atrapalhar do que ajudar. Além disso, pense sempre em Clean Code. Escreva métodos pequenos para que a quantidade de variáveis não seja excessiva.

Para mais detalhes sobre inline variables, visite o blog do Marco Cantu:
http://blog.marcocantu.com/blog/2018-october-inline-variables-delphi.html

 

Volto logo, pessoal! 🙂


 

André Celestino