fulviot66 ha scritto:
vorrei conoscere la Vs. opinione in merito alle Best Practices Programming, ad es. è valido interrompere con un'istruzione break un ciclo di iterazione, una volta soddisfatta la ricerca del valore, oppure sarebbe meglio lasciar terminare il ciclo e restituire il valore trovato?
Dipende sicuramente anche dal contesto nel senso, se quel ciclo fa parte di una funzione/metodo più ampio o se è in una funzione/metodo che fa solo un singolo compito specifico.
Tanto per dirne una. Se devo verificare se un array int[] (Java) è "strettamente crescente", il metodo lo scrivo così:
public static boolean strettamenteCrescente(int[] array) {
Objects.requireNonNull(array, "array non può essere null");
if (array.length == 0) {
return false;
}
for (int i = 0; i < array.length-1; i++) {
if (array[i] >= array[i+1]) {
return false;
}
}
return true;
}
I controlli all'inizio non sono la cosa fondamentale. Il punto è che se su due elementi vedo che non è strettamente crescente, non vado oltre, restituisco
subito false.
Poi c'è anche la "scuola di pensiero" che dice che un metodo dovrebbe sempre avere
un solo punto di uscita. Dipende dal contesto ma questa filosofia personalmente non la trovo davvero sempre "importante", specialmente se per seguirla mi tocca complicare le cose e/o aggiungere variabili e/o altro.
Se comunque qualcuno mi dovesse "scocciare" su questo aspetto, allora trasformo il metodo mettendo una variabile, l'uso del break e 1 punto di uscita finale.
public static boolean strettamenteCrescente(int[] array) {
Objects.requireNonNull(array, "array non può essere null");
boolean crescente = false;
if (array.length != 0) {
crescente = true;
for (int i = 0; i < array.length-1; i++) {
if (array[i] >= array[i+1]) {
crescente = false;
break;
}
}
}
return crescente;
}