O documento discute o conceito de metaprogramação em Ruby, comparando reflexão e metaprogramação e apresentando exemplos de como a metaprogramação pode ser usada para remover duplicação de código e torná-lo mais genérico, embora também possa torná-lo mais complexo e difícil de ler.
8. ü Discutir o que é
metaprogramação
ü Diferenciar reflexão e
metaprogramação
ü Como a
metaprogramação pode
nos ajudar
ü Como a
metaprogramação pode
nos atrapalhar
ü Se divertir :D
11. § Código que escreve código
§ Programa que escreve
programas
§ Altera código em tempo
de execução
§ Alterar o comportamento
do programa com o
programa
§ Lógica escondidada
dentro de si mesma
34. Ruby tem classes “abertas”
§ Podemos adicionar ou
sobrescrever métodos em
uma classe em qualquer
momento
§ Podemos adicionar ou
sobrescrever métodos em
uma instância em
qualquer momento
40. Um exemplo mais “interessante”
Um sistema de
vendas de revistas
Eventos:
• Nova venda
• Nova promoção
• Revista em falta
Interessados:
• Clientes (email)
• Gerentes (ActiveMQ)
• Outros apps (WS)
Fontes:
• Controllers
• Workers
• Models
60. Analisando a solução
§ Só executa quando o
método é chamado
§ Cria o método pra
evitar outra busca
§ Código genérico
§ Remove duplicações
§ É muito foda =)
64. Aprecie com moderação
§ Lógica de negócio NÃO
DEVE ser metaprogramada
§ Muita mágica aumenta o
tempo de aprendizado de
novos devs
§ Debugar o código fica difícil
§ Modificações em uma única
parte são difíceis
65. Quais os próximos passos
§ Entender Modelo de Objetos do Ruby
§ Singleton class/Eigenclass
§ Lambdas e Procs
§ Soluções alternativas para
metaprogramação