Personalmente, considero que Tuples es una parte iterativa del desarrollo cuando estás en un ciclo de investigación o simplemente "jugando". Debido a que una Tupla es genérica, tiendo a pensar en ella cuando trabajo con parámetros genéricos, especialmente cuando quiero desarrollar un fragmento de código genérico, y estoy comenzando por el final del código, en lugar de preguntarme "¿cómo me gustaría esta llamada ¿mirar?".
Muy a menudo me doy cuenta de que la colección que forma la Tupla se convierte en parte de una lista, y mirar List> no expresa realmente la intención de la lista, o cómo funciona. A menudo "vivo" con eso, pero me encuentro deseando manipular la lista y cambiar un valor; en ese momento, no necesariamente quiero crear una nueva Tupla para eso, por lo que necesito crear mi propia clase o estructura. para sostenerlo, para que pueda agregar código de manipulación.
Por supuesto, siempre hay métodos de extensión, pero con frecuencia no desea extender ese código adicional a implementaciones genéricas.
Ha habido ocasiones en las que he querido expresar datos como una tupla y no he tenido tuplas disponibles. (VS2008) en cuyo caso acabo de crear mi propia clase Tuple, y no la hago segura para subprocesos (inmutable).
Así que creo que soy de la opinión de que las tuplas son una programación perezosa a expensas de perder un nombre de tipo que describe su propósito. El otro gasto es que tienes que declarar la firma de la tupla siempre que se utilice como parámetro. Después de una serie de métodos que comienzan a parecer inflados, es posible que sienta, como yo, que vale la pena hacer una clase, ya que limpia las firmas del método.
Tiendo a comenzar por tener la clase como un miembro público de la clase en la que ya estás trabajando. Pero en el momento en que se extiende más allá de una simple colección de valores, obtiene su propio archivo y lo muevo fuera de la clase contenedora.
Entonces, en retrospectiva, creo que uso Tuples cuando no quiero salir y escribir una clase, y solo quiero pensar en lo que estoy escribiendo en este momento. Lo que significa que la firma de la tupla puede cambiar bastante en el texto media hora mientras averiguo qué datos necesitaré para este método y cómo devuelve los valores que devolverá.
Si tengo la oportunidad de refactorizar el código, a menudo cuestionaré el lugar de una Tupla en él.