Quale è preferibile sia per la tecnica solida che per la codifica sicura?
Esempio 1:
function_one()
blah;
function_two()
blah;
print blah;
exit;
...
Esempio n. 2:
function_one()
blah;
function_two()
blah;
return blah;
return blah;
print blah;
Ovviamente questa è una versione semplificata, e sto cercando una risposta che sia universale per alberi di funzioni più grandi, se possibile.
-1: Mi è piaciuto l'esempio n. 1 perché sembrava più rapido terminare non appena è stato fatto, facendo ciò che fa, invece di tornare alla chiamata originale per vivere la sua vita naturale. Inoltre, l'Esempio n. 1 sembra compartimentare il codice, aiutando a prevenire l'esecuzione involontaria di codice non intenzionale (che dovrebbe essere rilevato durante il test, ma mi preparo per il peggio). Tuttavia, questo modello si è dimostrato difficile da mantenere e non sembra in grado di adattarsi bene. Per esempio, avevo una pagina web che scrissi per echeggiare ciò che doveva e poi terminare, ma questo causava problemi lungo la strada assicurandomi che le intestazioni http fossero inserite prima dell'output; ciò richiederebbe l'invio delle intestazioni come parametro di funzione.
-2: L'esempio 2 sembra mantenere un ordine standard di fare le cose perché non tutte le funzioni terminano il prima possibile. Anche il codice può essere combinato più facilmente senza passare parametri aggiuntivi come nell'esempio # 1. Tuttavia, l'esempio n. 2 richiede più dichiarazioni di ritorno e continuerà il resto del programma. Cosa ne pensi?