Personalmente, considero que Tuples es una parte iterativa del desarrollo cuando estás en un ciclo de investigación, o simplemente "jugando". Como una Tuple es genérica, tiendo a pensar en ella cuando trabajo con parámetros genéricos, especialmente cuando quiero desarrollar una pieza genérica de código, y estoy comenzando en el extremo del código, en lugar de preguntarme "¿cómo me gustaría esta llamada? ¿mirar?".
A menudo me doy cuenta de que la colección que los formularios Tuple se vuelven parte de una lista, y mirando a Lista> realmente no expresa la intención de la lista, o cómo funciona. A menudo "vivo" con eso, pero me encuentro con la necesidad de manipular la lista y cambiar un valor, y en ese momento, no necesariamente quiero crear una nueva Tuple para eso, así que necesito crear mi propia clase o estructura. para sostenerlo, entonces puedo 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 las implementaciones genéricas.
Hubo ocasiones en que quería expresar datos como Tuple, y no tenía Tuples disponibles. (VS2008) en cuyo caso acabo de crear mi propia clase Tuple, y no la hago segura (inmutable).
Así que supongo que soy de la opinión de que las tuplas son programación perezosa a expensas de perder un nombre tipo que describe su propósito. El otro gasto es que debe declarar la firma de la Tupla donde sea que se use como parámetro. Después de una serie de métodos que comienzan a verse hinchados, puedes sentir lo mismo que yo, que vale la pena hacer una clase, ya que limpia las firmas del método.
Tiendo a comenzar teniendo la clase como miembro público de la clase en la que ya está trabajando. Pero en el momento en que se extiende más allá de simplemente una colección de valores, obtiene su propio archivo, y lo saco de la clase contenedora
En retrospectiva, creo que uso Tuples cuando no quiero irme y escribir una clase, y solo quiero pensar sobre 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 descubro qué datos voy a necesitar para este método, y cómo devuelve los valores que devolverá.
Si tengo la oportunidad de refactorizar el código, entonces a menudo voy a cuestionar el lugar de un Tuple en él.
posible duplicado de [? tuplas está utilizando en mi .NET 4.0 Código una mala decisión Diseño] (http://stackoverflow.com/questions/3017352/is-using-tuples-in-my-net-4-0-code-a-poor-design-decision) –
Bueno, puedo pensar en dos respuestas ... –
Si el concepto de "coordinar" hace Sentir como una clase entonces yo lo haría una clase. Use tuplas para aquellas situaciones donde * * no existe algún concepto razonable de "lógica de negocios" para el conjunto de datos que justifica la creación de un tipo. –