Personnellement, je trouve que Tuples est une partie itérative du développement lorsque vous êtes dans un cycle d'investigation ou que vous "jouez". Parce qu'un Tuple est générique, j'ai tendance à y penser lorsque je travaille avec des paramètres génériques - en particulier lorsque je veux développer un morceau de code générique, et je commence par la fin du code, au lieu de me demander "comment j'aimerais cet appel regarder?".
Très souvent, je me rends compte que la collection que les formes Tuple font partie d'une liste, et regarder List> n'exprime pas vraiment l'intention de la liste, ni comment elle fonctionne. Je "vis" souvent avec, mais j'ai envie de manipuler la liste et de changer une valeur - à quel point, je ne veux pas nécessairement créer un nouveau Tuple pour cela, donc je dois créer ma propre classe ou structure pour le tenir, donc je peux ajouter du code de manipulation.
Bien sûr, il existe toujours des méthodes d'extension - mais bien souvent, vous ne voulez pas étendre ce code supplémentaire à des implémentations génériques.
Il y a eu des moments où je voulais exprimer des données sous forme de tuple, et je n'avais pas de tuples disponible. (VS2008) auquel cas je viens de créer ma propre classe Tuple - et je ne la rend pas thread-safe (immuable).
Je suppose donc que je suis d'avis que les tuples sont une programmation paresseuse au détriment de la perte d'un nom de type qui décrit son but. L'autre dépense est que vous devez déclarer la signature du Tuple partout où elle est utilisée comme paramètre. Après un certain nombre de méthodes qui commencent à paraître gonflées, vous pouvez ressentir comme moi qu'il vaut la peine de créer une classe, car elle nettoie les signatures de méthode.
J'ai tendance à commencer par avoir la classe en tant que membre public de la classe dans laquelle vous travaillez déjà. Mais au moment où elle s'étend au-delà d'une simple collection de valeurs, elle obtient son propre fichier, et je la déplace hors de la classe contenant.
Donc, rétrospectivement, je crois que j'utilise Tuples quand je ne veux pas aller écrire un cours, et que je veux juste penser à ce que j'écris en ce moment. Ce qui signifie que la signature du Tuple peut changer beaucoup dans le texte une demi-heure pendant que je détermine les données dont je vais avoir besoin pour cette méthode et comment elle renvoie les valeurs qu'elle renverra.
Si j'ai la chance de refactoriser le code, je remets souvent en question la place d'un Tuple dans celui-ci.