C'è qualche ragione specifica per usare la clausola "else if"?

1

Usiamo tutti se ..else if .. else.

Ma sono ancora confuso sul motivo per cui usiamo else if . Dove se fa la stessa cosa di else if .

Quindi, perché stiamo usando else if ?

Qualche motivazione specifica alla base di questo?

Esiste un algoritmo in cui è obbligatorio utilizzare else se ?

    
posta Ranjit 10.01.2014 - 08:50
fonte

4 risposte

22

Il motivo principale per utilizzare else if è evitare un rientro eccessivo.

Ad esempio:

    if(a) {
    } else {
        if(b) {
        } else {
            if(c) {
            } else {
            }
        }
    }

Può diventare:

    if(a) {
    } else if(b) {
    } else if(c) {
    }

Ovviamente entrambi i pezzi di codice sopra sono equivalenti (il che significa che è impossibile che quest'ultimo sia obbligatorio oltre che nelle guide di stile).

    
risposta data 10.01.2014 - 08:56
fonte
6

la domanda chiede "perché hai bisogno di altro dato che puoi ottenere la stessa funzionalità usando solo se" (parafrasato). Prima di tutto, i due sono solo equivalenti in programmi abbastanza semplici; ci sono molte situazioni in cui altrimenti la funzionalità non può essere facilmente replicata usando solo istruzioni if.

che diceva, in situazioni così semplici è sempre meglio usare altrimenti if.

if (a==b){}
if (!(a==b) && a==c ){}

ci sono due problemi con questo che vengono risolti usando else if. Innanzitutto, esegui il confronto tra aeb due volte, il che è un lavoro non necessario. Secondo, a meno che non memorizzi le regole o faccia molto affidamento sulle parentesi, non è ovvio come si risolve la seconda espressione booleana.

if (a==b) {}
else if (a==c) {}

È più pulito, più chiaro e più efficiente. È fondamentalmente la programmazione del Santo Graal.

    
risposta data 10.01.2014 - 14:05
fonte
3

È per l'efficienza. Se hai una catena di clausole if...else if...else if , la valutazione si interrompe dopo aver valutato true. Se hai semplicemente una lista di clausole if , anche dopo che una valuta è vera, continuerai a controllare le altre, anche se saranno false. Se le condizioni comportano il richiamo di funzioni o altre operazioni "costose", si sprecano risorse (specialmente se le condizioni coinvolgono chiamate al servizio web o ricerche nel database). Questo è anche il motivo per cui dovresti provare a strutturare espressioni condizionali complicate come questa in modo che le condizioni "più economiche" vengano prima controllate.

    
risposta data 10.01.2014 - 22:30
fonte
2

Se pensiamo programmaticamente che lo scopo principale è se dobbiamo scegliere una cosa tra tante cose in quel momento dovremmo usare else if .

Inoltre ci possono essere molti modi per fare le stesse cose come switch..case in quel caso possiamo considerarlo come un altro costrutto.

    
risposta data 10.01.2014 - 14:35
fonte

Leggi altre domande sui tag