DEV Community

Roberson Miguel
Roberson Miguel

Posted on

Metaprogramação - Ela pode ser útil em diversas situações, mas não abuse!

Meu gerente Guilherme Franco aqui da Vindi fez essa postagem aqui no LinkedIn com uma dica muito legal sobre Refactor no Rails, que voce pode conferir no seguinte link:

https://lnkd.in/d79spFHw

Nessa postagem eu interagi com ele e deixei um comentário sobre a o uso ou não de metaprogramação, veja lá o que ele respondeu.

Se você é um iniciante em Ruby ou está apenas começando a explorar o mundo de desenvolvimento web, deve-se perguntar o que é metaprogramação e como ela pode ser útil.

Metaprogramação é uma técnica avançada de programação que permite modificar o comportamento de um programa em tempo de execução.

Ela pode ser útil em diversas situações, como quando você precisa adicionar novos recursos a uma classe existente ou criar comportamentos personalizados(use com moderação) para sua aplicação.

No exemplo da imagem, exploramos de maneira breve um dos conceitos básicos de metaprogramação em Ruby e que certamente você já viu e talvez já tenha usado seus projetos.

Image description

Neste exemplo, usamos attr_accessor para criar os métodos nome e idade automaticamente. Com isso, podemos definir e acessar esses atributos como se fossem variáveis comuns. Isso é possível graças à metaprogramação em Ruby, que permite definir e alterar o comportamento de uma classe em tempo de execução.

Viu, essa é uma dica legal de código para iniciantes em Ruby sobre metaprogramação é o uso de métodos attr_accessor, que permite criar getters e setters para uma classe.

Sacou?

Em Ruby a metaprogramação é ainda mais poderosa pois podemos adicionar, modificar, remover, executar, etc. qualquer código em tempo de execução. No entanto esse “poder” exige cuidado para evitar complicações de manutenção de código. Um dos pontos negativos da forte utilização de metaprogramação em Ruby é que, quando se abusa dela, fica muito difícil debugar e manter o código, pois você pode ver no stack trace que ocorreu um erro em um determinado método e, ao procurar por esse método, não encontrar nada.

Fontes:

"Metaprogramming Ruby 2" por Paolo Perrotta: um livro muito popular sobre metaprogramação em Ruby que aborda conceitos avançados e práticos. Disponível em: https://lnkd.in/dP9hFMXB

"The Well-Grounded Rubyist" por David A. Black: um livro abrangente sobre Ruby que inclui um capítulo sobre metaprogramação. Disponível em: https://lnkd.in/dUBkmzHR

Site do Marcos Brizeno: https://lnkd.in/dZxiHQJv

desenvolvimento #refactor #rubyonrails #quicktip #DevRel

Top comments (0)