Sì, puoi [ri] scrivere programmi senza istruzioni di break (o ritorna dalla metà dei loop, che fanno la stessa cosa). Tuttavia, potrebbe essere necessario introdurre ulteriori variabili e / o duplicazione del codice, che in genere rendono il programma più difficile da comprendere. Pascal (il linguaggio di programmazione) è stato molto male soprattutto per i programmatori principianti per questo motivo. Il tuo capo vuole fondamentalmente che tu programmi nelle strutture di controllo di Pascal. Se Linus Torvalds fosse nei tuoi panni, probabilmente mostrerebbe al tuo capo il dito medio!
C'è un risultato informatico chiamato la gerarchia delle strutture di controllo di Kosaraju, che risale al 1973 e che è menzionata nel (più) famoso documento di Knuth sulle foto del 1974. (Questo documento di Knuth era già stato raccomandato sopra da David Thornley, tra l'altro .) Ciò che S. Rao Kosaraju ha dimostrato nel 1973 è che non è possibile riscrivere tutti i programmi che hanno interruzioni a più livelli di profondità n in programmi con profondità di interruzione inferiore a n senza introdurre variabili aggiuntive. Ma diciamo che è solo un risultato puramente teorico. (Basta aggiungere alcune variabili extra ?! Sicuramente puoi farlo per compiacere il tuo capo ...)
Ciò che è molto più importante dal punto di vista dell'ingegneria del software è un recente documento del 1995 di Eric S. Roberts intitolato Loop Exits and Structured Programming: Reopening the Debate ( http://cs.stanford.edu/people/eroberts/papers/SIGCSE- 1995 / LoopExits.pdf ). Roberts riassume diversi studi empirici condotti da altri prima di lui. Ad esempio, quando a un gruppo di studenti del tipo CS101 è stato chiesto di scrivere codice per una funzione che implementa una ricerca sequenziale in un array, l'autore dello studio ha dichiarato quanto segue su quegli studenti che hanno usato una pausa / return / goto per uscire da il ciclo di ricerca sequenziale quando è stato trovato l'elemento:
Devo ancora trovare una sola persona che ha tentato un programma usando [questo stile] che ha prodotto una soluzione errata.
Roberts afferma inoltre che:
Gli studenti che hanno tentato di risolvere il problema senza utilizzare un ritorno esplicito dal ciclo for sono andati molto meno bene: solo sette dei 42 studenti che hanno tentato questa strategia sono riusciti a generare soluzioni corrette. Tale cifra rappresenta un tasso di successo inferiore al 20%.
Sì, potresti essere più esperto degli studenti CS101, ma senza usare l'istruzione break (o equivalentemente restituire / andare dal centro dei loop), alla fine scriverai un codice che mentre nominalmente ben strutturato è abbastanza peloso in termini di logica aggiuntiva variabili e duplicazione del codice che qualcuno, probabilmente te stesso, inserirà in esso dei bug logici mentre cerca di seguire lo stile di codifica del tuo capo.
Dirò anche qui che l'articolo di Roberts è molto più accessibile al programmatore medio, quindi una prima lettura migliore di quella di Knuth. È anche più breve e copre un argomento più ristretto. Probabilmente potresti persino consigliarlo al tuo capo, anche se è il management piuttosto che il tipo CS.