Cuando programo en C, generalmente me gusta adherirme a la convención de mantener las funciones cortas y legibles, especialmente main (). Estoy actualizando un código 8051, y he notado que un ingeniero anterior sacó las funciones de inicio, las colocó en la función principal y comentó: "Nota: las funciones de inicio no deben estar anidadas, sáquelas".
Este es solo un ejemplo de código que se encuentra en main en lugar de una función como init_FPGA (). FPGA_DONE y FPGA_RST_N son IOs.
// Wait till FPGA done is asserted then release FPGA reset (or time out)
delay_time = 0;
while(1)
{
delay_ms(100);
delay_time++;
if(FPGA_DONE || delay_time>300)
break;
}
if (FPGA_DONE && !FPGA_RST_N) {
FPGA_RST_N = 1;
delay_ms(10);
}
Para mí, refactorizar estas inicializaciones a otras funciones de una manera más legible resultaría en una pila de llamadas muy corta, por lo que no creo que el desbordamiento de pila sea una preocupación. Hay muchas otras llamadas a funciones mucho más profundas en todo el código. Entonces, ¿hay alguna razón para dar un tratamiento especial a las funciones de inicio y evitar anidarlas?