Je veux savoir combien de paramètres peuvent être transmis pour fonctionner, je veux dire ce qui est une bonne pratique de programmation, en ce qui concerne le passage des paramètres à fonctionner?Nombre de paramètres passés à la fonction?
Répondre
Moins il y en a, mieux c'est, mais seulement si c'est logique. Je n'ai jamais entendu parler d'un nombre standard de paramètres à passer, mais j'ai entendu parler des moyens de les améliorer.
Par exemple, ne pas le faire:
public void DoSomething(string name, int age, int weight, ...) { }
mais plutôt:
public void DoSomething(Person person) { }
mais nous espérons que cela va sans dire. Mais aussi, je recommande de ne pas créer une classe bizarre juste pour réduire le nombre de paramètres.
Code Complete suggère un maximum de 7. Cela est dû The Magical Number Seven, Plus or Minus Two:
... le nombre d'objets peut contenir un humain moyen en mémoire de travail est de 7 ± 2; C'est ce qu'on appelle souvent la loi de Miller.
Voici un extrait du code complet 2e édition:
limite le nombre de paramètres d'une routine à environ sept
Seven est un nombre magique pour la compréhension des gens. La recherche psychologique a révélé que les gens ne peuvent généralement pas suivre plus de sept segments d'information en même temps (Miller, 1956). Cette découverte a été appliquée à un très grand nombre de disciplines, et il semble raisonnable de supposer que la plupart des gens ne peuvent pas suivre plus de sept paramètres de routine à la fois.
Si le nombre est de 7 ± 2, ne devrions-nous pas prendre l'extrémité inférieure et dire un maximum de 5? –
@Jonathan Voir mes modifications. C'est en fait 7. –
C'est tellement vrai. J'ai été une fois dans une classe alors que dans l'Air Force où l'instructeur a mis cette séquence sur le tableau, nous a demandé de le mémoriser puis de le répéter: C130KC10C140L1011C5. Dans l'armée de l'air, tout le monde ne voit pas d'avions, mais il se trouve que je rédige un programme sur les avions cargos. J'ai donc vu quelque chose de plus facile à retenir: C130, KC10, C140, L1011, C5 –
IMHO 5 à MAX. 6 est trop pour moi et 7 accablante!
Donc, vous vous conformez à la loi Millers alors, comme Anton suggère :) – Default
Yup Dude! La partie de la loi Millers que je n'aime pas est "7 + 2" c'est un trop grand nombre ...! –
Si vous souhaitez transmettre plusieurs fonctions à une fonction, vous pouvez envisager d'autres moyens de transférer ces données, par opposition à un simple passage de paramètre. Par exemple, dans certains cas, il peut être préférable de générer un fichier XML, puis de transmettre des valeurs liées à l'obtention de données autour de ce fichier XML. Si vous exécutez une application Web, il se peut que ce soit simplement en transmettant des données via des sessions ou en les publiant plutôt que de recevoir ou de recevoir des appels qui vous simplifieront la vie.
Vous pouvez également stocker certaines de ces informations en tant que variables de membre.
Je ne recommanderais pas plus de 4. Vous ne voulez pas que vos lignes dépassent 30 caractères à moins que vous générez une chaîne massive, mais même alors, il devient vraiment illisible et grossier (bien que nécessaire surtout pour le javascript).
Il est bon de programmer des programmes pour qu'ils soient faciles à lire. Personnellement, j'essaie de ne pas écrire des fonctions qui ont plus de paramètres que ce qui peut être affiché sur une ligne à l'écran. Habituellement, ce n'est pas plus de cinq ou six paramètres au plus.
Certains compilateurs ARM transmettent trois paramètres ou moins à l'aide de registres et trois sont empilés. L'appel de type empilé est plus lent que l'appel utilisant des registres. Dans ce cas, vous devez utiliser trois paramètres ou moins, pour la vitesse.
Si vous ne savez pas combien de paramètres que vous allez passer à une utilisation pour envoyer la fonction param arguments variables à une méthode.
En fonction de l'architecture, plus de 1-3 provoquent le passage sur la pile. C'est plus lent que de passer par des registres. Du point de vue des performances, il est préférable de passer soit un pointeur vers une classe wrapper, soit un pointeur vers une structure. Cela garantit qu'une seule valeur est transmise et enregistre certaines écritures/lectures en mémoire.
- 1. NullPointerException mais pas de paramètres NULL passés à la fonction
- 2. Surcharger la fonction Javascript en fonction des paramètres passés
- 3. Fonction PHP pour connaître le nombre de paramètres passés en fonction?
- 4. Fusion de paramètres passés
- 5. Paramètres IDispatch passés de Delphi à C#
- 6. Mauvais nombre d'arguments passés à: repl $ repl
- 7. Comment compter le nombre d'arguments passés à une fonction qui accepte un nombre variable d'arguments?
- 8. Looping et récursivité en fonction des paramètres passés
- 9. Joomla et XMLRPC: 'Paramètres incorrects passés à la méthode ...'
- 10. fonction Php limitant la quantité de caractères passés
- 11. Get Nombre de mois passés en Ruby
- 12. Appel d'une fonction avec un nombre différent de threads passés à l'application
- 13. PHP: Définir la fonction avec le nombre variable de paramètres?
- 14. Initialisation Détail Vue de la plume avec les paramètres passés à partir de la vue racine
- 15. Comment remplacer la fonction Python tout en supportant tous les paramètres passés
- 16. Comment trouver le nombre d'arguments passés à un script Bash?
- 17. Comment savoir quels paramètres sont passés dans une fonction de rappel dans YUI?
- 18. Obtention des paramètres passés avec zend php _forward
- 19. Batch: Vérification du nombre de paramètres
- 20. Fonction Ruby avec un nombre illimité de paramètres
- 21. Comment appeler une fonction avec un nombre variable de paramètres?
- 22. La fonction de déconnexion de Django supprime les paramètres régionaux
- 23. struct la fonction Paramètres
- 24. Passage d'un nombre variable de paramètres à la procédure stockée
- 25. rendre tous les paramètres passés rapidement dans les rails
- 26. requête linq to xml avec des paramètres vides potentiels passés
- 27. Où sont passés les paramètres d'approbation du certificat Mac?
- 28. Méthode de conception C++ qui accepte les arguments de nombre variable passés à partir de QtScript
- 29. en utilisant un nombre différent de paramètres pour l'insertion et la mise à jour de sqldatasource
- 30. Comment passer des paramètres dans une fonction qui ne limite pas le nombre de paramètres?
. Je trouve que lorsque j'ai besoin de beaucoup de paramètres, j'ai tendance à en avoir besoin à plusieurs endroits ou je dois constamment en ajouter d'autres. C'est pourquoi nous avons des choses comme le modèle EventArgs dans .NET. –
C'est un bon point – Joel
Joel: bon point dans votre réponse, mais j'ai déjà lu dans un article que si le nombre de paramètres est supérieur à 5 alors utilisez la structure. J'aime cette déclaration que si vous avez plus de 5 paramètres alors définissez struct et utilisez cette struct pour passer des paramètres. –