41 votes

Qu'est-ce que les mauvaises pratiques lors de l'utilisation de paramètres de sortie?

Existe-il des principes à garder à l'esprit lors de l'utilisation de paramètres de sortie? Ou puis-je regarder juste un bon moyen de laisser une méthode de retourner plusieurs valeurs?

Ce qui fait la langue, les concepteurs ont en tête quand ils ont été en spécifiant le paramètre de sortie?

Edit après réflexion:

Comme je suis en train de penser à ce sujet maintenant, je serais enclin à dire que l'utilisation excessive des paramètres de sortie pourrait être indicitive d'un code-odeur. Si une méthode doit retourner les instances de plus de 1 type spécifique, il implique que la méthode a plus de 1 préoccupation, ce qui est une violation de la SRP.

26voto

Brian Rasmussen Points 68853

Personnellement, je ne suis pas trop vif sur l' out paramètres au-delà de la TryParse convention. Je préfère retourner une instance d'un type spécifique qui encapsule les différents paramètres, car il rend le code plus facile à lire de l'omi.

Si vous ne voulez pas définir des types spécifiques pour cela, vous pouvez utiliser le n-uplet type dans la prochaine .NET framework. Les Tuples sont fondamentalement un tas de valeurs enveloppé dans un type. Ils sont beaucoup utilisés par exemple en F#.

11voto

dkackman Points 8131

À l'aide des paramètres est généralement une mauvaise pratique. Elle indique généralement une méthode qui fait plus que ce qu'on a bien défini chose. Le seul moment où je vous recommandons de les utiliser est pour l'Interopérabilité des scénarios où ils sont parfois nécessaires en raison de la signature de l'API.

7voto

Reed Copsey Points 315315

La catégorie outils de conception spécifiquement dire à "Éviter des paramètres", avec une longue discussion pour la justification.

Sauf s'il y a une bonne raison pour utiliser un paramètre d'une méthode, il est généralement préférable de faire une classe personnalisée ou structure pour tenir vos résultats. L'aide à sortir de paramètres réduit la facilité d'utilisation d'un API.

3voto

MikeP Points 4823

Une mise en garde importante à garder à l'esprit est qu'avant .NET 3.5 SP1, des méthodes qui prennent ou la valeur de retour de types ne sont jamais inline. Cela pourrait avoir de grandes implications sur les performances pour les petites et souvent appelées méthodes, telles que celles d'un vecteur de la bibliothèque math.

C'est l'une des principales raisons pour lesquelles les SlimDX vecteur de la bibliothèque math fournit des surcharges qui utilisent des paramètres au lieu de renvoyer des valeurs; elle sert de potentiel de la micro-optimisation.

2voto

J'utilise les paramètres de sortie, quand j'écris statique TryParse méthodes sur mes cours. Juste pour garder en synchronisation avec le CLR.

Autre que cela, il y a probablement une meilleure idée de retourner une classe qui a tout ce dont vous avez besoin sur elle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X