Actualmente estoy trabajando en un conjunto de informes que tienen muchas secciones diferentes (todas requieren un formato diferente), y estoy tratando de encontrar la mejor manera de estructurar mi código. Informes similares que hemos hecho en el pasado terminan teniendo funciones muy grandes (más de 200 líneas) que hacen toda la manipulación de datos y el formato del informe, de modo que el flujo de trabajo se ve más o menos así:
DataTable reportTable = new DataTable();
void RunReport()
{
reportTable = DataClass.getReportData();
largeReportProcessingFunction();
outputReportToUser();
}
Me gustaría poder dividir estas grandes funciones en trozos más pequeños, pero me temo que terminaré teniendo docenas de funciones no reutilizables, y una función similar de "hacer todo aquí" cuyo único trabajo es llama a todas estas funciones más pequeñas, así:
void largeReportProcessingFunction()
{
processSection1HeaderData();
calculateSection1HeaderAverages();
formatSection1HeaderDisplay();
processSection1SummaryTableData();
calculateSection1SummaryTableTotalRow();
formatSection1SummaryTableDisplay();
processSection1FooterData();
getSection1FooterSummaryTotals();
formatSection1FooterDisplay();
processSection2HeaderData();
calculateSection1HeaderAverages();
formatSection1HeaderDisplay();
calculateSection1HeaderAverages();
...
}
O, si vamos un paso más allá:
void largeReportProcessingFunction()
{
callAllSection1Functions();
callAllSection2Functions();
callAllSection3Functions();
...
}
¿Es esta realmente una mejor solución? Desde el punto de vista de la organización, supongo que lo es (es decir, todo está mucho más organizado de lo que podría estarlo), pero en cuanto a la legibilidad del código, no estoy seguro (cadenas de funciones potencialmente grandes que solo llaman a otras funciones).
Pensamientos?
fuente