Obecnie pracuję nad zestawem raportów, które zawierają wiele różnych sekcji (wszystkie wymagają innego formatowania) i próbuję znaleźć najlepszy sposób na ustrukturyzowanie mojego kodu. Podobne raporty, które zrobiliśmy w przeszłości, mają bardzo duże (ponad 200 linii) funkcje, które wykonują wszystkie operacje na danych i formatują raport, dzięki czemu przepływ pracy wygląda mniej więcej tak:
DataTable reportTable = new DataTable();
void RunReport()
{
reportTable = DataClass.getReportData();
largeReportProcessingFunction();
outputReportToUser();
}
Chciałbym móc podzielić te duże funkcje na mniejsze części, ale obawiam się, że skończę z dziesiątkami funkcji, których nie można ponownie użyć, i podobną funkcją „rób wszystko tutaj”, której jedynym zadaniem jest wywołać wszystkie te mniejsze funkcje, takie jak:
void largeReportProcessingFunction()
{
processSection1HeaderData();
calculateSection1HeaderAverages();
formatSection1HeaderDisplay();
processSection1SummaryTableData();
calculateSection1SummaryTableTotalRow();
formatSection1SummaryTableDisplay();
processSection1FooterData();
getSection1FooterSummaryTotals();
formatSection1FooterDisplay();
processSection2HeaderData();
calculateSection1HeaderAverages();
formatSection1HeaderDisplay();
calculateSection1HeaderAverages();
...
}
Lub jeśli pójdziemy o krok dalej:
void largeReportProcessingFunction()
{
callAllSection1Functions();
callAllSection2Functions();
callAllSection3Functions();
...
}
Czy to naprawdę lepsze rozwiązanie? Z organizacyjnego punktu widzenia przypuszczam, że tak (tzn. Wszystko jest o wiele lepiej zorganizowane, niż mogłoby być inaczej), ale nie jestem pewien co do czytelności kodu (potencjalnie duże łańcuchy funkcji, które wywołują tylko inne funkcje).
Myśli?