Personalmente, ritengo che Tuples sia una parte iterativa dello sviluppo quando sei in un ciclo investigativo, o semplicemente "giocando". Dato che una Tuple è generica, tendo a pensarci quando lavoro con parametri generici - specialmente quando voglio sviluppare un pezzo generico di codice, e sto iniziando dal codice, invece di chiedermi "come mi piacerebbe questa chiamata? guardare?".
Molto spesso mi rendo conto che la raccolta che le forme Tuple diventano parte di una lista, e fissando List> non esprime veramente l'intenzione della lista, o come funziona. Io spesso "vivo" con esso, ma mi trovo a voler manipolare la lista e cambiare un valore - a quel punto, non voglio necessariamente creare una nuova tupla per questo, quindi ho bisogno di creare la mia classe o struttura per tenerlo, così posso aggiungere codice di manipolazione.
Ovviamente esistono sempre metodi di estensione, ma molto spesso non si desidera estendere tale codice aggiuntivo alle implementazioni generiche.
Ci sono state volte in cui desidero esprimere i dati come Tupla e non sono disponibili Tuple. (VS2008) nel qual caso ho appena creato la mia classe Tuple - e non la rendono thread-safe (immutabile).
Quindi immagino che io sia dell'opinione che Tuples sia una programmazione pigra a spese di perdere un nome di tipo che descrive il suo scopo. L'altra spesa è che devi dichiarare la firma della Tupla ovunque sia usata come parametro. Dopo un certo numero di metodi che iniziano a sembrare gonfiati, potresti sentirti come me, che vale la pena fare una lezione, poiché pulisce le firme dei metodi.
Tendo ad avere la classe come membro pubblico della classe in cui stai già lavorando. Ma nel momento in cui si estende oltre una semplice serie di valori, ottiene il proprio file e io lo sposto da la classe contenente
Quindi, a posteriori, credo di usare Tuples quando non voglio andare a scrivere una lezione, e voglio solo pensare a quello che ho scritto in questo momento. Il che significa che la firma della Tuple potrebbe cambiare parecchio nel testo di mezz'ora, mentre capisco di quali dati ho bisogno per questo metodo e come restituisce i valori che restituirà.
Se ho la possibilità di fare il codice refactoring, spesso mi interrogo su un posto di Tuple.
possibile duplicato di [? sta usando tuple nel mio .NET 4.0 Codice decisione cattiva progettazione] (http://stackoverflow.com/questions/3017352/is-using-tuples-in-my-net-4-0-code-a-poor-design-decision) –
Bene, posso pensare a due risposte ... –
Se il concetto di "coordinate" rende senso come classe, quindi lo farei diventare un corso. Usa le tuple per quelle situazioni in cui non esiste * un ragionevole concetto di "business logic" per l'insieme di dati che giustifica la creazione di un tipo. –