現在、多くの異なるセクション(すべて異なる書式設定が必要)を含む一連のレポートに取り組んでおり、コードを構造化する最適な方法を見つけようとしています。過去に行った同様のレポートには、レポートのすべてのデータ操作と書式設定を行う非常に大きな(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();
...
}
これは本当に良い解決策ですか?組織的な観点から私はそれがそうであると思います(すなわち、すべてはそうでなければそうであるかもしれないよりもはるかに組織化されます)が、コードの読みやすさに関して私は確信していません(潜在的に他の関数を呼び出すだけの関数の大きなチェーン)。
考え?