Frequento il terzo anno di un ITIS, qualche settimana fa abbiamo avuto il compito di informatica e ieri la mia prof ha portato il mio compito corretto. Brevemente, io e la mia prof abbiamo perso un'ora e mezza a discutere sulle nostre due opinioni divergenti, dal momento che avevo utilizzato più di un return in una funzione dell'esercizio del compito, lei lo aveva segnato come errore e sosteneva che utilizzare un return al centro del codice è un segno di cattiva programmazione, in quanto è come utilizzare un goto che porta alla fine della funzione incondizionatamente.
Dunque strutture come queste:
Sono da considerare completamente sbagliate. Io invece mi ostinavo a sostenere la mia opinione, cioè che tali strutture sono utilizzati da chiunque, anche da professionisti, e in qualsiasi libro d'informatica ci sono esempi di questo genere (e credetemi che li ho incontrati), anche in forme più contratte (ad esempio, nella funzione segno(x) che ho riportato sopra può essere omesso l'else), il tutto comunque funziona perfettamente. Tornando a casa ho anche analizzato alcune librerie e alcuni codici sorgenti di programmi open source, e come io sostenevo all'interno di una funzione sono presenti 2 o anche più return.codice:boolean segno(int x){ if(x>0) return 1; else return 0; }
Per avere la certezza matematica della mia affermazione, chiedo anche a voi che sicuramente ne sapete più di me, è corretto usare 2 o più return all'interno della stessa funzione?