¿Cómo se maneja la inicialización condicional? ¿Es una buena práctica?

¿Cómo se maneja la inicialización condicional? ¿Es una buena práctica?


Estoy tratando de decidir entre varias prácticas posibles. Digamos, mi función tiene una cantidad de bloques if(), que funcionan con datos, que son únicos para ellos.



  • ¿Debo declarar e inicializar los datos locales (para el bloque) dentro del bloque? ¿Tiene esto un costo de rendimiento en tiempo de ejecución (debido a la asignación de tiempo de ejecución en la pila)?


  • ¿O debería declarar y/o inicializar todas las variables en la entrada de la función, de modo que se haga en un bloque de operación, posiblemente más rápido?


  • ¿O debería separar los bloques if() en diferentes funciones, aunque solo tengan un par de líneas y usen solo una en el programa?



¿O estoy pasando por alto otra opción más limpia? ¿Se puede responder la pregunta en su forma general actual?


Respuestas:



Absolutamente:esto tiende a hacer que los programas sean más legibles.



No:todas las asignaciones se realizan por adelantado:el espacio en la pila se reserva para las variables en todas las ramas al ingresar una función, no cuando se ingresa la rama. Además, esto podría incluso ahorrarle algo de espacio, ya que el compilador puede reutilizar el espacio asignado para las variables en ramas que no se superponen.



No, esto no es más rápido y podría ser un poco más derrochador.



Eso probablemente tendría un impacto negativo en la legibilidad de su programa.