Artigo do tipo Exemplos Práticos
Recursos especiais neste artigo:
Conteúdo sobre boas práticas
Métodos Anônimos
Neste artigo veremos o conceito de métodos anônimos, como fazer as declarações de tipo de método. Será feita uma revisão ao uso de variáveis, ponteiros para procedimentos, funções e métodos de objetos que geralmente são empregados em eventos.

Abordaremos algumas situações onde podemos empregar este recurso, como em DataSets, StringLists, gerenciamento de transações a nível de banco de dados, componentes visuais, Threads entre outros.

Em todos estes exemplos será realizado um comparativo do modo tradicional de implementação com o uso de métodos anônimos. Facilmente perceberemos o quanto este recurso da linguagem torna nosso código mais limpo, seguro e de fácil manutenção.

Em que situação o tema é útil
É um recurso útil em situações de refatoração de código, minimizando códigos redundantes, demonstrando métodos que podem realizar procedimentos dinâmicos de acordo com a necessidade. Vale comentar que é aplicável no desenvolvimento de todos os tipos de aplicações Delphi, tanto em ambiente Client-Server quanto Multicamadas e Web.

Programadores Delphi na sua maioria estão acostumados a desenvolver sempre da forma mais RAD (Desenvolvimento Rápido de Aplicações) possível. A ferramenta nos permite em pouco tempo projetar sistemas e disponibilizar aos clientes em ambiente de produção. Porém esta não é a melhor forma de desenvolvimento, como já sabemos. Isto também não quer dizer que devemos instanciar todos os Forms, Buttons, Edits e demais componentes “na unha”, para depois liberarmos todos manualmente. Devemos utilizar o modo RAD do Delphi para o desenvolvimento de interfaces (GUI). No entanto, para tarefas como efetuar conexões com banco de dados, escrever regras de negócios e rotinas de cálculo, por exemplo,deve-se usar todos os recursos que a Delphi Language nos disponibiliza, tornando o código mais limpo, facilmente expansível, além de contribuir com a facilidade de manutenção.

Métodos anônimos são um dos recursos da Delphi Language presentes a partir da versão 2009 do Delphi. Historicamente falando, esta versão trouxe diversas e importantes melhorias à Linguagem, trazendo consigo a nova RTTI recheada de melhorias, independência do DataSnap Framework da tecnologia COM+, inclusão dos Generics (BOX 1) e Unicode (BOX 2), por exemplo. Este recurso apesar de não ser tão recente, ainda é pouco utilizado pelos desenvolvedores.

BOX 1. Generics

Generics é um recurso que permite ao desenvolvedor a criação de tipos parametrizados, ou seja, parâmetros passados para nossa classe ou método serão substituídos por um tipo. Esse tipo pode ser primitivo (Integer, Double, Boolean), estruturado (Records) ou complexo (TClass). É utilizado muito para criar listas de objetos, pois com seu uso ao passar um objeto que não pertence ao tipo especificado na lista, recebemos em erro em tempo de compilação e não em tempo de execução como ocorria nas versões do Delphi que não tínhamos suporte ao recurso.

BOX 2. Unicode

Unicode é um padrão que possibilita os dispositivos fazerem a representação e manipulação, de forma correta, em textos de qualquer sistema de escrita existente. Permite o uso, por exemplo, de caracteres japoneses, chineses, russos e etc.

Como o próprio nome sugere, os métodos anônimos são procedimentos e funções que não tem um nome associado. Podemos associar blocos de código a uma variável ou usarmos como parâmetro para um método. Também há como executar métodos através de chamadas sem nome, ou seja, podemos ter vários métodos sem nome e executá-los da melhor forma, cada um de acordo com a necessidade. É um recurso semelhante aos Delegates (BOX 3) e Closures (BOX 4) da plataforma .NET, além de serem usados por algumas outras linguagens de programação, como o JavaScript por exemplo.

BOX 3. Delegate

Delegates são referências diretas para um método através de uma variável ponteiro, ela possui o endereço de memória para aquele método. São semelhantes aos eventos do Delphi, onde temos referências a procedures.

BOX 4. Closure

Closures são blocos de códigos que podem ser executados a qualquer momento, guardando o contexto no qual eles foram criados, mesmo se a função que o criou saia do escopo.

No início, pode-se achar um pouco estranha sua utilização, mas ao compreender a sintaxe, os métodos anônimos são de extrema utilidade em várias situações, principalmente onde há iteração, como em listas de objetos, Strings, Arrays e DataSets. Veremos nos exemplos práticos como aplicar o recurso nestas situações.

Declaração

Métodos Anônimos podem ser definidos tanto como Procedures quanto Functions, além de poder possuir qualquer número de parâmetros ou nenhum. Podemos usar os já existentes na RTL do Delphi ou criarmos os nossos personalizados. Os tipos de métodos anônimos são declarados como referências para métodos (procedures ou functions). É possível atribuir o método anônimo a variáveis e passá-los também como forma de parâmetro num método. Sua sintaxe é mostrada na ...

Quer ler esse conteúdo completo? Tenha acesso completo