Metaprogramming Ruby

Posté le 9 mai 2011 @ 15 h 51 min par Matthieu Segret

Metaprogramming Ruby de Paolo Perrotta

 

Un ami m’a conseillé il y a quelques mois le livre : Metaprogramming Ruby de Paolo Perrotta.

Un livre très intéressant donnant quelques bonnes pratiques pour faire de la métaprogrammation avec Ruby.

 
 

Qu’est-ce que la métaprogrammation ?

Il y a plusieurs définitions, mais celle qui nous intéresse est la suivante :

« Metaprogramming is writing code that writes code »

 
Vous pouvez trouvez ici une définition plus complète : http://en.wikipedia.org/wiki/Metaprogramming.

 

A quoi cela sert-il ?

Redéfinir, ajouter des méthodes et des classes, exécuter du code à la volée, cela permet de créer des frameworks comme Rails et Sinatra, mais aussi des bibliothèques comme devise ou haml.

Tous utilisent la métaprogrammation. Les raisons sont diverses : rendre une bibliothèque plus intuitive à utiliser, éviter la duplication de code, s’interfacer avec un code existant, implémenter un domain specific language

Voici un exemple concret dans Rails : la génération des accesseurs d’un modèle à partir de l’introspection des champs de la base de données. Le développeur qui crée un nouveau modèle n’a ainsi pas besoin de maintenir ces accesseurs dans le monde objet.

Un autre exemple toujours dans Rails : les méthodes find_by de ActiveRecord.

 

Pourquoi donc se priver de faire de la métaprogrammation ?

La métaprogrammation permet de faire des choses fantastiques. Cependant elle requiert de la discipline. Si on ne suit pas certaines bonnes pratiques, on peut aboutir à un code confus et difficile à débogguer.

Si vous souhaitez vous investir de manière plus approfondi dans la métaprogrammation avec Ruby, n’hésitez pas à lire le livre de Paolo Perrotta Metaprogramming Ruby.

Pas encore de Commentaires

Vous pouvez être le premier à laisser un commentaire!

Laisser un commentaire

Connexion OpenID

Connexion Standard