Attualmente sto lavorando a una serie di report che hanno molte sezioni diverse (tutte richiedono una formattazione diversa) e sto cercando di capire il modo migliore per strutturare il mio codice. Rapporti simili che abbiamo fatto in passato finiscono per avere funzioni molto grandi (oltre 200 righe) che eseguono tutta la manipolazione e la formattazione dei dati per il rapporto, in modo che il flusso di lavoro assomigli a questo:
DataTable reportTable = new DataTable();
void RunReport()
{
reportTable = DataClass.getReportData();
largeReportProcessingFunction();
outputReportToUser();
}
Vorrei poter suddividere queste grandi funzioni in blocchi più piccoli, ma temo che finirò per avere dozzine di funzioni non riutilizzabili e una funzione simile "fai tutto qui" il cui unico compito è chiama tutte queste funzioni più piccole, in questo modo:
void largeReportProcessingFunction()
{
processSection1HeaderData();
calculateSection1HeaderAverages();
formatSection1HeaderDisplay();
processSection1SummaryTableData();
calculateSection1SummaryTableTotalRow();
formatSection1SummaryTableDisplay();
processSection1FooterData();
getSection1FooterSummaryTotals();
formatSection1FooterDisplay();
processSection2HeaderData();
calculateSection1HeaderAverages();
formatSection1HeaderDisplay();
calculateSection1HeaderAverages();
...
}
Oppure, se facciamo un ulteriore passo avanti:
void largeReportProcessingFunction()
{
callAllSection1Functions();
callAllSection2Functions();
callAllSection3Functions();
...
}
È davvero una soluzione migliore? Da un punto di vista organizzativo suppongo che lo sia (cioè tutto è molto più organizzato di quanto potrebbe essere altrimenti), ma per quanto riguarda la leggibilità del codice non sono sicuro (catene potenzialmente grandi di funzioni che chiamano solo altre funzioni).
Pensieri?