Sta usando la nuova progettazione errata della classe System.Tuple?

17

Mi piace il concetto di System.Tuple in quanto mi consente di restituire più parametri in una singola chiamata di funzione senza creare un'istanza di una nuova classe, tuttavia questo sfugge a qualsiasi buona prassi di programmazione come Microsoft Patterns & Pratiche, principi SOLIDI, ecc.

Sto solo cercando di valutare quanto dovrei usare liberamente questa funzione o se dovrei usarla solo in scenari caso limite quando necessario.

    
posta Kyle Ballard 08.12.2011 - 20:28
fonte

2 risposte

9

Il problema con l'utilizzo di Tuple è che i parametri di tipo generico non trasmettono significato.

Per motivi di leggibilità, potresti prendere in considerazione l'utilizzo di una classe personalizzata o anche di un tipo anonimo con membri con nome.

    
risposta data 08.12.2011 - 20:32
fonte
7

Una delle qualità di codice più importanti è la leggibilità. Quindi chiediti:
Quando io (vale a dire in chiunque altro tranne te) guarda la firma del metodo, so che significato hanno i rispettivi componenti del Tuple ?
Ad esempio se la coppia di float che stai restituendo è un insieme di coordinate polari, è chiaro?

Questo è chiaro:

Tuple<Float, Float> getPolarCoords();

Questo è fuorviante (perché si potrebbero assumere coordinate cartesiane):

Tuple<Float, Float> getCoords();

E questo è un significato privo di significato:

Tuple<Float, Float> getTuple();

Quindi, in generale, si valuterà la chiarezza caso per caso e il refattore se necessario. Se rappresenti lo stesso tipo di dati di Tuple in molti luoghi diversi, creare una classe è sicuramente una buona idea.

    
risposta data 08.12.2011 - 20:51
fonte

Leggi altre domande sui tag