Come contrassegnare un blocco condizionale vuoto in Java

3

In C ++ quando volevo segnare che se è vuoto per progetto ho aggiunto NULL; come istruzione:

if (cond1) {
    ...
} else if (cond2) {
    NULL;
} else {
    ...
}

Tuttavia in Java sembra impossibile avere null; come istruzione. Qual è il modo corretto di contrassegnare vuoto dalla progettazione se in Java (è solo un commento)?

    
posta Maciej Piechotka 19.11.2011 - 17:45
fonte

2 risposte

5

In primo luogo, com'è questo:

if (cond1) {
    ...
} else if (cond2) {
    NULL;
} else {
    ...
}

Meglio di:

if (cond1) {
    ...
} else if (cond2) {

} else {
    ...
}

Il NULL; -statement non dice nulla, o lo fa?

In secondo luogo, come altri hanno sottolineato, non è necessario avere quel blocco vuoto, a meno che non sia necessario dire qualcosa sulla condizione o lasciare spazio per gestirlo.

Quindi questo ha perfettamente senso:

if (cond1) {
    ...
} else if (cond2) {
    //cond2 is not handled, because 2 is the smallest prime number
} else {
    ...
}

O questo:

if (cond1) {
    ...
} else if (cond2) {
    //TODO: investigate whether/how this condition needs to be handled
} else {
    ...
}

Tuttavia, una conseguenza vuota non documentata non ha alcuno scopo, indipendentemente dal fatto che tu scriva NULL; o meno.

Infine, se ritieni di avere troppe condizioni, dovresti studiare in che modo i modelli comportamentali e il polimorfismo in generale potrebbero aiutarti a ripulire il tuo codice.

    
risposta data 19.11.2011 - 20:03
fonte
11

Questa è una cattiva pratica e non dovresti avere questo blocco in primo luogo. Se non si reagisce a una condizione, non codificarla. È un odore di codice e contiene pochissime informazioni utili. Usarlo per progettare un flusso di programma è anche peggio, poiché questo può sempre essere espresso in modo più elegante.

Il modo corretto di gestirlo è rimuovere il else if non necessario o riscrivere le tue condizioni invece di avere un marcatore per un blocco vuoto.

Nel tuo esempio sarebbe:

if (cond1) 
{
    ...
}
else if(!cond2)
{
    ...
}

Se le condizioni sono noiose da scrivere o troppo difficili da leggere, incapsulali in un metodo o valutali una volta e salvali in una variabile.

Se vuoi davvero comunicare perché non hai gestito una determinata condizione, scrivi un commento sopra il metodo o la dichiarazione.

    
risposta data 19.11.2011 - 17:53
fonte

Leggi altre domande sui tag