Зараз я працюю над набором звітів, у яких є багато різних розділів (для всіх потрібен різний формат), і я намагаюся з’ясувати найкращий спосіб структурувати свій код. Подібні звіти, які ми робили раніше, мали дуже великі (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();
...
}
Це справді краще рішення? З організаційної точки зору, я гадаю, що це (тобто все набагато організованіше, ніж могло б бути інакше), але щодо читабельності коду я не впевнений (можливо, великі ланцюги функцій, які викликають лише інші функції).
Думки?