J'aime le concept de System.Tuple en ce qu'il me permet de retourner plusieurs paramètres en un seul appel de fonction sans instancier une nouvelle classe, mais cela défie toutes les bonnes pratiques de programmation telles que Microsoft Patterns & Practices, SOLID Principles, etc.
J'essaie juste de mesurer à quel point je devrais utiliser cette fonctionnalité de manière libérale ou si je ne devais l'utiliser que dans des scénarios de cas particuliers lorsque cela était nécessaire.
.net
patterns-and-practices
Kyle Ballard
la source
la source
Réponses:
Le problème avec l'utilisation
Tuple
est que les paramètres de type génériques ne transmettent pas de sens.Pour plus de lisibilité, vous pouvez envisager d'utiliser une classe personnalisée ou même un type anonyme avec des membres nommés.
la source
T1
,T2
etc. Ne vous dit pas ce que cela signifie.GetTopTwoPercentages()
qui renvoie aTuple<decimal, decimal>
. Cela pourrait être assez clair.L'une des qualités de code les plus importantes est la lisibilité. Alors demandez-vous:
quand je (c'est-à-dire chez n'importe qui d'autre que vous) regarde la signature de la méthode, est-ce que je sais ce que signifient les composants respectifs de l'
Tuple
avoir?Par exemple, si la paire de flotteurs que vous retournez est un ensemble de coordonnées polaires, est-ce clair?
C'est clair:
Ceci est trompeur (car on supposerait des coordonnées cartésiennes):
Et cela n'a pas de sens:
Donc, d'une manière générale, vous devrez évaluer la clarté au cas par cas et refactoriser si nécessaire. Si vous représentez le même type de données que
Tuple
dans de nombreux endroits différents, la création d'une classe est définitivement une bonne idée.la source