Best Practices Programming

di il
6 risposte

Best Practices Programming

Ciao a tutti,
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?
A voi la parola!

Fulvio

6 Risposte

  • Re: Best Practices Programming

    Tenere il processore impegnato a fare cose inutili non ha senso se non si sta aspettando un evento.
    Forse la domanda era se ha senso cercare di riscrivere il ciclo senza usare il break?
  • Re: Best Practices Programming

    Appoggio il commento di @Weierstrass

    Se non la aggiungi alle condizioni di terminazione / permanenza del ciclo, allora è più che sensato usare il break.
    E' insensato continuare con le iterazioni quando ci sono le condizioni di uscita / interruzione.
  • Re: Best Practices Programming

    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;
        }
  • Re: Best Practices Programming

    Weierstrass ha scritto:


    Tenere il processore impegnato a fare cose inutili non ha senso se non si sta aspettando un evento.
    Forse la domanda era se ha senso cercare di riscrivere il ciclo senza usare il break?
    Esatto! Intendevo proprio questo, vedo che l'argomento ha stimolato una bella discussione.
  • Re: Best Practices Programming

    Diciamo che è più un not a problem programming.
    Diciamo che nel livello di significatività è davvero bassissimo
  • Re: Best Practices Programming

    Personalmente non sono contrario a priori nè ai break e neanche ai goto;
    IMHO, dipende solo da come si usano
Devi accedere o registrarti per scrivere nel forum
6 risposte