Atualmente, estou trabalhando em um conjunto de relatórios que têm muitas seções diferentes (todas exigindo formatação diferente) e estou tentando descobrir a melhor maneira de estruturar meu código. Relatórios semelhantes que fizemos no passado acabam tendo funções muito grandes (mais de 200 linhas) que fazem toda a manipulação e formatação de dados para o relatório, de modo que o fluxo de trabalho se parece com isso:
DataTable reportTable = new DataTable();
void RunReport()
{
reportTable = DataClass.getReportData();
largeReportProcessingFunction();
outputReportToUser();
}
Eu gostaria de poder dividir essas funções grandes em partes menores, mas tenho medo de acabar com dezenas de funções não reutilizáveis e uma função semelhante "faça tudo aqui", cuja única tarefa é chame todas essas funções menores, assim:
void largeReportProcessingFunction()
{
processSection1HeaderData();
calculateSection1HeaderAverages();
formatSection1HeaderDisplay();
processSection1SummaryTableData();
calculateSection1SummaryTableTotalRow();
formatSection1SummaryTableDisplay();
processSection1FooterData();
getSection1FooterSummaryTotals();
formatSection1FooterDisplay();
processSection2HeaderData();
calculateSection1HeaderAverages();
formatSection1HeaderDisplay();
calculateSection1HeaderAverages();
...
}
Ou, se dermos um passo adiante:
void largeReportProcessingFunction()
{
callAllSection1Functions();
callAllSection2Functions();
callAllSection3Functions();
...
}
Esta é realmente uma solução melhor? Do ponto de vista organizacional, suponho que seja (ou seja, tudo é muito mais organizado do que poderia ser), mas, quanto à legibilidade do código, não tenho certeza (potencialmente grandes cadeias de funções que chamam apenas outras funções).
Pensamentos?