A parte che il compilatore accetta tutte e due i casi allo stesso modo, a quello che so il nodo formalmente corretto sarebbe usare un solo return alla fine di tutta la funzione, quindi quello contenente la break. Per completare, a quanto ne so, un return finale é sottinteso, almeno nelle void, ma comunque é preferibile esplicito
Non so se ci sia un modo più corretto dell'altro... aspetta un purista del codice.
Dal lato pratico, con un codice più complesso a volte è più semplice mettere il return nel punto esatto un cui serve invece di arrivare in fondo alla funzione.
Si chiamano FUNZIONI, non void, questa cosa mi dà un fastidio terribile!!! void è il tipo di ritorno.
Le regole della programmazione strutturata vorrebbero che ci fosse un unico return per funzione, e io seguo sempre questo principio, il flusso del codice risulta più facile da seguire. Per brevi funzioni si può anche trasgredire, ma in generale io consiglio di evitare return multipli, tanto amati dai programmatori Java.
[quote author=return - Arduino Reference ]
(return()) Terminate a function and return a value from a function to the calling function, if desired.[/quote]
La differenza é la sopratutto che return() puó dare un valore di ritorno e da quello che ho capito che break() non é adatto per uscire da una funzione.
Messo da parte l'aspetto formale di rispettare quanto più possibile il classico "return" finale, il mio quesito era finalizzato a capire se l'uscita anticipata da un "void" dall'interno di "while", "for" o "switch" compromettesse in qualche modo affidabilità del codice.
Ne dubito, probabilmente il concetto è esattamente lo stesso, proprio per questo è importante che tu capisca esattamente cos'è quel void e perché sta lì.
lelebum:
Arrivo da una realtà in cui le subroutine si chiamavano comandi o funzioni ed avevano diverso significato.
Probabilmente le "command" erano in realtà a tutti gli effetti delle funzioni che però non ritornavano alcun valore (equivalente a ritornare void in 'C'), mentre le "function" restituivano un valore (equivalente a ritornare uno dei tipi validi in 'C') ... giusto ?