Come viene gestita l'inizializzazione condizionale ed è una buona pratica?

Come viene gestita l'inizializzazione condizionale ed è una buona pratica?


Sto cercando di decidere tra diverse pratiche possibili. Supponiamo che la mia funzione abbia un numero di blocchi if(), che funzionano sui dati, che sono unici per loro.



  • Devo dichiarare e inizializzare i dati locali (per il blocco) all'interno del blocco? Questo ha un costo delle prestazioni di runtime (a causa dell'allocazione del runtime nello stack)?


  • Oppure dovrei dichiarare e/o inizializzare tutte le variabili all'ingresso della funzione, in modo che ciò avvenga in un blocco operativo, possibilmente più veloce?


  • O dovrei separare i blocchi if() in diverse funzioni, anche se sono lunghi solo un paio di righe e ne usano solo una nel programma?



O sto trascurando un'altra opzione più pulita? È possibile rispondere alla domanda nella sua forma generale e attuale?


Risposte:



Assolutamente:questo tende a rendere i programmi più leggibili.



No:tutte le allocazioni vengono eseguite in anticipo:lo spazio sullo stack è riservato alle variabili in tutti i rami all'ingresso di una funzione, non quando viene inserito il ramo. Inoltre, questo potrebbe anche farti risparmiare spazio, perché lo spazio allocato per le variabili nei rami non sovrapposti può essere riutilizzato dal compilatore.



No, non è più veloce e potrebbe essere leggermente più dispendioso.



Ciò avrebbe probabilmente un impatto negativo sulla leggibilità del tuo programma.