Secara pribadi, saya menemukan Tuple menjadi bagian berulang dari perkembangan ketika Anda berada dalam siklus investigasi, atau hanya "bermain". Karena Tuple bersifat generik, saya cenderung memikirkannya saat bekerja dengan parameter generik - terutama saat ingin mengembangkan bagian kode generik, dan saya mulai dari bagian akhir kode, daripada bertanya pada diri sendiri "bagaimana saya akan menyukai panggilan ini untuk melihat?".
Cukup sering saya menyadari bahwa koleksi yang dibentuk Tuple menjadi bagian dari sebuah daftar, dan menatap List> tidak benar-benar mengungkapkan maksud dari daftar tersebut, atau cara kerjanya. Saya sering "hidup" dengannya, tetapi mendapati diri saya ingin memanipulasi daftar, dan mengubah nilai - pada titik mana, saya tidak perlu membuat Tuple baru untuk itu, jadi saya perlu membuat kelas atau struct saya sendiri untuk menahannya, jadi saya bisa menambahkan kode manipulasi.
Tentu saja, selalu ada metode ekstensi - tetapi sering kali Anda tidak ingin memperluas kode tambahan itu ke implementasi umum.
Ada kalanya saya ingin mengekspresikan data sebagai Tuple, dan tidak memiliki Tupel yang tersedia. (VS2008) dalam hal ini saya baru saja membuat kelas Tuple saya sendiri - dan saya tidak membuatnya aman untuk thread (tidak dapat diubah).
Jadi saya kira saya berpendapat bahwa Tuple adalah pemograman malas dengan mengorbankan kehilangan nama jenis yang menjelaskan tujuannya. Biaya lainnya adalah Anda harus mendeklarasikan tanda tangan Tuple di mana pun itu digunakan sebagai parameter. Setelah sejumlah metode yang mulai terlihat membengkak, Anda mungkin merasa seperti saya, bahwa ada baiknya membuat kelas, karena membersihkan tanda tangan metode.
Saya cenderung memulai dengan menjadikan kelas sebagai anggota publik dari kelas yang sudah Anda kerjakan. Tetapi saat itu melampaui sekadar kumpulan nilai, ia mendapatkan file itu sendiri, dan saya memindahkannya dari kelas yang memuatnya.
Jadi dalam retrospeksi, saya percaya saya menggunakan Tuple ketika saya tidak ingin pergi dan menulis kelas, dan hanya ingin memikirkan tentang apa yang saya tulis sekarang. Yang berarti tanda tangan Tuple dapat berubah cukup banyak dalam teks setengah jam sementara saya mencari tahu data apa yang saya perlukan untuk metode ini, dan bagaimana ia mengembalikan nilai apa pun yang akan dikembalikannya.
Jika saya mendapat kesempatan untuk merefaktor kode, maka sering kali saya akan mempertanyakan tempat Tuple di dalamnya.