Особисто я вважаю, що Кортежі є ітеративною частиною розробки, коли ти перебуваєш у слідчому циклі або просто "граєш". Оскільки Tuple є загальним, я схильний думати про нього, працюючи із загальними параметрами - особливо коли хочу розробити загальний фрагмент коду, і я починаю з кінця коду, замість того, щоб запитати себе, "як би мені сподобався цей дзвінок дивитись?".
Досить часто я усвідомлюю, що колекція, яку формують Tuple, стає частиною списку, і, дивлячись на List> насправді не виражає наміру списку або того, як він працює. Я часто "живу" з цим, але виявляю, що хочу маніпулювати списком і змінити значення - в цей момент я не обов'язково хочу створювати для цього новий Tuple, тому мені потрібно створити власний клас або структуру щоб утримати його, щоб я міг додати маніпуляційний код.
Звичайно, завжди існують методи розширення - але досить часто ви не хочете поширювати цей додатковий код на загальні реалізації.
Бували випадки, коли я хотів висловити дані як Кортеж, і не мав доступних Кортежів. (VS2008), у цьому випадку я щойно створив власний клас Tuple - і не роблю його безпечним для потоків (незмінним).
Тож, мабуть, я вважаю, що Tuples ледаче програмує за рахунок втрати імені типу, яке описує його призначення. Інші витрати полягають у тому, що ви повинні заявити про підпис кортежу, де б він не використовувався як параметр. Після ряду методів, які починають здаватися роздутими, ви можете відчути, як і я, що варто зробити клас, оскільки він очищає підписи методів.
Я, як правило, починаю з того, що клас є загальнодоступним членом класу, в якому ви вже працюєте. Але в той момент, коли він виходить за рамки просто набору значень, він отримує власний файл, і я переміщую його із вміщуючого класу.
Отже, в ретроспективі, я вважаю, що використовую Кортежі, коли не хочу піти і написати клас, а просто хочу подумати про те, що я пишу зараз. Що означає, що підпис Кортежу може досить сильно змінитися в тексті за півгодини, поки я зрозумію, які дані мені знадобляться для цього методу, і як він повертає ті значення, які коли-небудь поверне.
Якщо я отримаю можливість рефакторингу коду, то часто я буду ставити під сумнів місце Tuple в ньому.