Envoyé par
Idelways
Bonjour,
Merci d'avoir évoqué l'exemple de Ruby Aurelpitiless.
Un exemple de génération à la volée des méthodes en Rails est sur Active Record:
Pour chaque colonne de la table, l'ORM créé plusieurs méthodes. Pour un modèle Client, il regarde dans le schéma de la base et trouve par exemple une colonne phone_number, alors il ajoute à la classe Client des méthodes client.phone_number pour retourner le numéro de téléphone, la méthode d'assignation client.phone_numer= pour le modifier et client.phone_number? qui retourne True si le client a renseigné son numéro de téléphone.
C'est quand même plus sexy que de faire !empty($client.attributes['phone_number']) ou de créer soit même manuellement des méthodes par colonnes et entretenir tout ce bazar à chaque changement de schémas comme j'en ai vu sur des ORM .NET.
D'ailleurs, sans cela, je ne crois pas que l'application du pattern Convention plutôt que configuration soit aisée, voir même possible sur certains cas.
Par ailleurs, la possibilité d'ouvrir des classes est très puissante, par exemple si une faille critique est détectée dans un framework donné, on peut la patcher soit même soit en corrigeant la ou les méthodes incriminées, ou les désactiver en supprimant la méthode en attendant un correctif.
A partir de là, les applications sont illimitées pour ce genre de manipulations et on peut faire pratiquement tout.
Mais je vous accorde le l'usage du monkey patching soit plus utile dans le cadre du développement d'un framework ou une librairie générique, son usage par le "développeur final" peut être facilement évité.
Cordialement
Idelways
Partager