IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Best practice grand nombre d'arguments


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Par défaut Best practice grand nombre d'arguments
    Bonjour à tous,

    Une question me trotte dans la tête depuis un petit moments, j'en profite donc pour lancer un débat :

    Selon vous, dans le cas ou l'on doit appeler un fonction avec un grand nombre d'arguments : quelle est la meilleur façon de procéder (appel direct, passage de tableau, d'objet, ou autre ....)


    Merci d'avance de votre participation.

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Il n'y a pas lieu de créer un débat, aucun programmeur digne de ce nom ne te dira qu'il faut mettre 50 arguments à ta fonction. C'est vrai que beaucoup pinaillent sur le nombre d'arguments acceptables mais en somme, quand il y en a "trop" (laissé à l’appréciation de chacun, pour moi c'est ~8) il est convenable d'utiliser une structure (objet ou hashmap).

    Cela pour 2 raisons principales:
    1. avoir trop d'arguments nuit à la lisbilité (surtout s'ils sont tous sur la même ligne) et au débug
    2. chaque argument est passé sur la pile par copie (sauf s'il s'agit d'un objet / tableau auquel cas la référence est utilisée) donc l'usage mémoire augmente


    Voici un exemple qui illustre mon propos avec extract et compact:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function foo (array $params) {
    	extract($params);
    	echo "$a $b $c ... ";
    }
     
    $a = 1;
    $b = 2;
    $c = 3;
    foo(compact('a','b','c'));

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut

    En règle générale, lorsque tu as plus de 6 paramètres, il est possible de les regrouper fonctionnellement.
    Par exemple, si tu veux créer un utilisateur en base avec toutes ses coordonnées, passer les nom, prénom, date de naissance, numéro de rue, rue, code postal, ville, pays, téléphone, email en paramètre d'une seule fonction, ça va vite devenir le bazar. Ce sera plus simple et plus lisible de regrouper toutes les informations de l'adresse dans un objet ou un tableau.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. MySQL : Best Practice : Nombre de champ dans une table
    Par Ziquet dans le forum Requêtes
    Réponses: 3
    Dernier message: 29/05/2008, 17h18
  2. Nombre d'arguments variable
    Par gege2061 dans le forum C
    Réponses: 7
    Dernier message: 05/08/2004, 16h43
  3. UNION de deux SELECT avec nombre d'arguments différents
    Par orus8 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/07/2004, 15h32
  4. Traitement d'un grand nombre de champ
    Par k-lendos dans le forum Langage SQL
    Réponses: 8
    Dernier message: 17/03/2004, 16h13
  5. Une unité pour gérer des très grands nombres
    Par M.Dlb dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2003, 13h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo