Le Blog du Geek Joyeux

Plus moins vite tu codes, moins plus vite ça plante

Surcharge de méthode élégante en Javascript

| Commentaires

Aujourd’hui, j’ai eu besoin de surcharger une méthode Javascript. Premier réflexe, réécrire la fonction en y ajoutant le code voulu.

Soit le code qui suit :

1
2
3
4
5
6
7
mon_objet.fait_le_café = function() {
  var tasse = prendre_une_tasse();
  tasse.verser_café();
  tasse.faire_chauffer();

  return tasse;
}

Afin d’ajouter du sucre, on pourrait surcharger de la façon suivante :

1
2
3
4
5
6
7
8
9
mon_objet.fait_le_café = function() {
  var tasse = prendre_une_tasse();
  tasse.verser_café();
  tasse.faire_chauffer();

  tasse.ajouter_sucre();

  return tasse;
}

Jusque là, rien d’inhabituel. Mais quid du code propre, simple et surtout DRY ?

Voici donc une façon plus élégante d’obtenir le même résultat en écrivant juste le code nécessaire :

1
2
3
4
5
6
7
8
9
mon_objet.fait_le_café_sans_sucre = mon_objet.fait_le_café;

mon_objet.fait_le_café = function() {
  var tasse = this.fait_le_café_sans_sucre();

  tasse.ajouter_sucre();

  return tasse;
}

C’est tout simple, ça fonctionne et c’est DRY…

Pour information, l’idée m’est venue du framework Ruby On Rails (en) et de sa méthode alias_method_chain (en)

Commentaires