В настоящее время я работаю над набором отчетов, которые имеют много разных разделов (все требуют различного форматирования), и я пытаюсь найти лучший способ структурировать мой код. Подобные отчеты, которые мы делали в прошлом, в итоге имеют очень большие (более 200 строк) функции, которые выполняют всю обработку данных и форматирование отчета, так что рабочий процесс выглядит примерно так:
DataTable reportTable = new DataTable();
void RunReport()
{
reportTable = DataClass.getReportData();
largeReportProcessingFunction();
outputReportToUser();
}
Я хотел бы иметь возможность разбивать эти большие функции на более мелкие куски, но я боюсь, что в итоге у меня будут десятки не подлежащих повторному использованию функций и похожая функция «сделать все здесь», единственная задача которой состоит в том, чтобы вызовите все эти меньшие функции, например так:
void largeReportProcessingFunction()
{
processSection1HeaderData();
calculateSection1HeaderAverages();
formatSection1HeaderDisplay();
processSection1SummaryTableData();
calculateSection1SummaryTableTotalRow();
formatSection1SummaryTableDisplay();
processSection1FooterData();
getSection1FooterSummaryTotals();
formatSection1FooterDisplay();
processSection2HeaderData();
calculateSection1HeaderAverages();
formatSection1HeaderDisplay();
calculateSection1HeaderAverages();
...
}
Или, если мы пойдем еще дальше:
void largeReportProcessingFunction()
{
callAllSection1Functions();
callAllSection2Functions();
callAllSection3Functions();
...
}
Это действительно лучшее решение? С организационной точки зрения я полагаю, что это так (т.е. все гораздо более организовано, чем могло бы быть), но я не уверен в читабельности кода (потенциально большие цепочки функций, которые вызывают только другие функции).
Мысли?