Tôi hiện đang làm việc trên một tập hợp các báo cáo có nhiều phần khác nhau (tất cả đều yêu cầu định dạng khác nhau) và tôi đang cố gắng tìm ra cách tốt nhất để cấu trúc mã của mình. Các báo cáo tương tự chúng tôi đã thực hiện trong quá khứ có các hàm rất lớn (hơn 200 dòng) thực hiện tất cả các thao tác và định dạng dữ liệu cho báo cáo, sao cho quy trình công việc trông giống như sau:
DataTable reportTable = new DataTable();
void RunReport()
{
reportTable = DataClass.getReportData();
largeReportProcessingFunction();
outputReportToUser();
}
Tôi muốn có thể chia các hàm lớn này thành các phần nhỏ hơn, nhưng tôi sợ rằng cuối cùng tôi sẽ có hàng tá các chức năng không thể tái sử dụng và một chức năng "làm mọi thứ ở đây" tương tự mà công việc duy nhất của nó là gọi tất cả các hàm nhỏ hơn, như vậy:
void largeReportProcessingFunction()
{
processSection1HeaderData();
calculateSection1HeaderAverages();
formatSection1HeaderDisplay();
processSection1SummaryTableData();
calculateSection1SummaryTableTotalRow();
formatSection1SummaryTableDisplay();
processSection1FooterData();
getSection1FooterSummaryTotals();
formatSection1FooterDisplay();
processSection2HeaderData();
calculateSection1HeaderAverages();
formatSection1HeaderDisplay();
calculateSection1HeaderAverages();
...
}
Hoặc, nếu chúng ta tiến thêm một bước:
void largeReportProcessingFunction()
{
callAllSection1Functions();
callAllSection2Functions();
callAllSection3Functions();
...
}
Đây thực sự là một giải pháp tốt hơn? Từ quan điểm tổ chức, tôi cho rằng nó là (tức là mọi thứ đều có tổ chức hơn nhiều so với trước đây), nhưng về khả năng đọc mã tôi không chắc chắn (chuỗi chức năng lớn chỉ gọi các chức năng khác).
Suy nghĩ?