Originariamente inviato da crissstian96
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?
Molto dipende dal linguaggio di programmazione: se fortemente tipizzato, la tecnica di lnessuno può dare una migliore garanzia di robustezza. Se la variabile $return è dichiarata come booleana, e la funzione deve ritornare un valore booleano, avere un solo return $return; alla fine ti dà la garanzia che la funzione ritorna qualcosa, e ritorna ciò che ti aspetti, ovvero un booleano.
Ma in linguaggi debolmente tipizzati, questa garanzia sarebbe limitata... e a volte non è nemmeno richiesta perché la stessa funzione può ritornare valori diversi (o non ritornare nulla). Quindi il tutto si minimizza alla leggibilità del codice, che è un punto importante ma non fondamentale...
In ogni caso... un tocco di eleganza nel codice, specie in ambiti accademici, non guasta mai.
Nel tuo esempio specifico (che mi rendo conto essere solo un esempio), la forma più elegante sarebbe questa:
codice:
boolean segno(int x){
return x > 0;
}
Poi ci sono altri casi, non mi andrebbe di generalizzare. Se per esempio c'è una condizione facile per cui il valore di ritorno della funzione sarebbe determinato, IO la farei subito:
codice:
boolean funzione_a_caso(int x, int y , int z){
if( z == 0)
return false;
boolean ret = false;
// lungo algoritmo di calcoli
return ret;
}
troverei più leggibile questo rispetto a:
codice:
boolean funzione_a_caso(int x, int y , int z){
boolean ret = false;
if( z == 0) {
return ret;
}else {
// lungo algoritmo di calcoli
}
return ret;
}
Mi risparmio un else e un po' di graffe.
Poi de gustibus.