Sostituzione dei parametri con struct

4

Sto incontrando un sacco di metodi nel mio progetto che hanno un sacco di parametri incorporati in essi e che rendono complicato chiamare i metodi come devo iniziare a dichiarare le variabili prima di chiamare i metodi.

Come tale, vorrei rifattorizzare il codice per restituire una struct e mi chiedevo se fosse una buona idea.

Uno degli esempi da un'interfaccia:

void CalculateFinancialReturnTotals(FinancialReturn fr, out decimal expenses, out decimal revenue, out decimal levyA, out decimal levyB, out decimal profit, out decimal turnover, out string message)

e se dovessi fare il refactoring, inserirò tutti i parametri out nella struct in modo tale che la firma del metodo sia molto più semplice come sotto.

[structName] CalculateFinancialReturnTotals(FinancialReturn fr);

Si prega di avvisare.

    
posta Jonathan 25.09.2012 - 10:26
fonte

1 risposta

6

Questa è praticamente una non-domanda per me. Sì, quello che suggerisci è molto probabilmente un miglioramento rispetto al design attuale.

L'approccio generale migliore dipende però dal contesto e senza conoscere il contesto più ampio - solo quell'esempio isolato - non si può raccomandare molto al di là di ciò che si è già pensato.

Ad esempio, quali altri metodi ci sono? Hanno qualche denominatore comune (intendo un insieme simile di parametri out ); puoi riutilizzare questa struttura (buona) o dovresti creare molte diverse strutture (cattive)?

E perché una struttura, non una classe? Ricorda che le strutture non possono essere ereditate.

Il nome di questo metodo - CalculateFinancialReturnTotals - è un odore di codice a sé stante. La mia sensazione è che CalculateTotals dovrebbe essere sufficiente. Se non è ovvio che si tratta di rendimenti finanziari, il design generale potrebbe essere imperfetto in qualche modo. Ma è solo indovinare.

    
risposta data 25.09.2012 - 10:43
fonte

Leggi altre domande sui tag