Recursos especiais neste artigo:
Conteúdo sobre boas práticas
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.
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.
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.
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.
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 ...
Confira outros conteúdos:
Perguntas frequentes
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.