Nidificati se istruzioni o più istruzioni if [duplicate]

-2

Qual è il modo migliore?

- Opzione 1 -------------

if ( condition1 )
{   
    statement1
}
else  
{ 
    exit program
}

if ( condition2 ) 
{   
    statement2  
}
else 
{  
    exit program 
}

---- Opzione 2 ------

if ( condition1 )
{

    statement 1

    if ( condition2 ) 
    { 

        statement2   

    }
    else 
    { 
        exit program
    }

}
else
{
    exit program
}
    
posta user1657661 19.08.2016 - 03:06
fonte

3 risposte

2

In genere preferisco ... (suppongo che dipenda dal tipo di algoritmo con cui si ha a che fare, dalla densità del codice, dalla facilità di comprensione a cui si sta mirando) ...

if ( ! condition1 ) { exit; }
statement1;

if ( ! condition2 ) { exit; }    
statement2;

Il tuo chilometraggio può variare.

    
risposta data 19.08.2016 - 03:49
fonte
-3

Questa è una domanda piuttosto soggettiva e potrebbe anche dipendere dal tipo di linguaggio che stai utilizzando.
Dipende molto da ciò che hai inserito nella tua istruzione1 e istruzione2 .

La parte più importante di qualsiasi domanda come questa è leggibilità . Un approccio sembra migliore? Rimuovere il codice duplicato? Riduci il codice gonfio?

C'è anche una questione di ambito . Se hai una variabile come:

var variable;
if (condition1)
{
    variable = someValue;
}

if (condition2)
{
    function(variable);
}

Quindi potrebbe essere meglio annidato.

if (condition1)
{
    var variable = someValue;
    if (condition2)
    {
        function(variable);
    }
}

Poi c'è una questione di manutenibilità .
Se le istruzioni non sono correlate (non condividono variabili locali e né le condizioni né le istruzioni dipendono dall'altra), separarle sarebbe più leggibile e più veloce da modificare. Non dovrai considerare la condizione precedente quando immagini il flusso di lavoro del codice.

Potresti prendere in considerazione la possibilità di separarli in funzioni, se sono completamente separate.

    
risposta data 19.08.2016 - 09:30
fonte
-5

Utilizza un interruttore. Lo switch consentirà più casi per condizioni diverse.

switch(expression) {
    case n:
        code block
        break;
    case n:
        code block
        break;
    default:
        default code block
}
    
risposta data 19.08.2016 - 04:28
fonte

Leggi altre domande sui tag