Con quasi tutto, si riduce alle esigenze del deliverable. Nei "vecchi tempi", il codice spaghetti con più punti di ritorno invitava a perdite di memoria, poiché i programmatori che preferivano quel metodo in genere non pulivano bene. Ci sono stati anche problemi con alcuni compilatori che "perdevano" il riferimento alla variabile return quando lo stack veniva estratto durante il ritorno, nel caso di ritorno da uno scope annidato. Il problema più generale era quello del codice rientrante, che tenta di fare in modo che lo stato di chiamata di una funzione sia esattamente lo stesso del suo stato di ritorno. I mutatori di oop hanno violato questo e il concetto è stato accantonato.
Ci sono risultati finali, in particolare i kernel, che richiedono la velocità fornita da più punti di uscita. Questi ambienti normalmente hanno una propria memoria e gestione dei processi, quindi il rischio di una perdita è ridotto al minimo.
Personalmente, mi piace avere un unico punto di uscita, dal momento che lo uso spesso per inserire un punto di interruzione sull'istruzione return ed eseguire un'ispezione del codice su come il codice ha determinato quella soluzione. Potrei semplicemente andare all'ingresso e attraversarlo, cosa che faccio con soluzioni ampiamente nidificate e ricorsive. In qualità di revisore del codice, più resi in una funzione richiedono un'analisi molto più approfondita, quindi se lo fai per accelerare l'implementazione, stai derubando Peter per salvare Paul. Sarà richiesto più tempo nelle revisioni del codice, invalidando la presunzione di un'implementazione efficiente.
- 2 centesimi
Si prega di consultare questo documento per maggiori dettagli: NISTIR 5459