JavaScript : minimiser le nombre d’arguments des fonctions

 Article modifié dernièrement le 19 Avr 2011 @ 13 h 28 min

Voici un moyen très pratique de simplifier l’écriture de fonctions nécessitant un grand nombre d’arguments optionnels.

Au lieu de passer de manière classique les arguments de la fonction un à un, il est possible de passer un unique argument de type objet comprenant l’ensemble des arguments nécessaires. L’objet ainsi passé est communément appelé un « JavaScript Object Literal« .

© http://blogs.sitepointstatic.com

© http://blogs.sitepointstatic.com

Manière habituelle

Voici une fonction qui permet d’afficher le contenu d’une carte, l’argument « name » est obligatoire tandis que les arguments « type », « manacost » et « edition » sont facultatifs.

Nous appelons la fonction de 3 manières différentes, avec un nombre différent d’arguments à chaque fois. Nous observons que plus il y a d’arguments à saisir et plus la fonction est difficile à lire ou à maintenir.

Manière pratique

Voici la même fonction qui prend en paramètre un seul argument qui contient l’ensemble des données d’une carte.

Le nombre de lignes de code est légèrement plus élevé avec cette seconde méthode mais elle présente un avantage certain lorsque le nombre d’arguments est important :

  1. La fonction est simplifiée avec l’acceptation d’un unique argument en entrée (args)
  2. La valeur des arguments devient simple à lire et peut facilement être mise à jour ou modifiée
  3. Le lien entre la valeur et l’argument est plus direct et donc facilement compris

Utilisation

Si vos fonctions n’utilisent que très peu d’arguments, alors cette technique n’est peut-être pas utile car elle pourrait avoir l’effet inverse.

Par contre sur des fonctions dont le nombre d’arguments n’est pas encore figé ou lorsque vous savez qu’il en faudra beaucoup, alors c’est une technique qui à mon sens vaut le coup d’être appliquée.

Trois flèches vers le bas

1- Logiciel de brouillage d’adresse IP :

Contourner la censure en surfant anonyme

2- L’article explicatif :

La différence entre un proxy et un VPN

3- Comment espionner un smartphone (app) :

L’application de référence

Commentez ici

  • Greg 1 octobre 2010, 1 01

    Simplification de l’écriture de fonctions = gain de vitesse pour le programme je présume ?

  • Mimie 1 octobre 2010, 9 09

    Si en disant « gain de vitesse » tu sous-entends gain de vitesse d’exécution alors je ne pense pas pour cet exemple précis, c’est plutôt une bonne pratique d’écriture qui rend la fonction plus compréhensible pour un développeur qui tomberai dessus pour la première fois.

  • meduz' 9 octobre 2010, 19 07

    J’ai un vague souvenir d’un truc équivalent en C++, mais j’en suis plus certain.

  • Mimie 9 octobre 2010, 21 09

    Certainement, en Java elle existe depuis Java Tiger (Java 5.0) avec les VarArgs :

    public static String format(String pattern, Object... arguments);
    

Article suivant:

Article précédent:

Share This