Quando il flusso di codice è simile a questo:Quali sono alcuni modi migliori per evitare il do-mentre (falso); hack in Java?
if(check())
{
...
...
if(check())
{
...
...
if(check())
{
...
...
}
}
}
ho generalmente visto questo lavoro in giro per evitare questo flusso di codice disordinato:
do {
if(!check()) break;
...
...
if(!check()) break;
...
...
if(!check()) break;
...
...
} while(false);
Quali sono alcuni modi migliori che evitano questa soluzione/hack così che diventa un codice di livello superiore (a livello di settore)?
Ci sono forse dei costrutti che provengono da Apache Commons o Google Guava?
Nota: questa è una copia di the same question for C++. Le migliori risposte ci sono veramente funzioni di puntatori e il comando GOTO. Entrambi non esistono in Java. Sono interessato con interesse alla stessa cosa per Java.
Inserirlo in una nuova funzione e utilizzare restituire non è, a mio avviso, una buona soluzione, poiché return chiude il metodo. Quindi se la mia classe ha 20 metodi con questi costrutti, dovrei aggiungere 20 metodi aggiuntivi per ottenere questo risultato. Ecco perché GOTO è stata la migliore risposta per C++.
Alcune delle risposte continuano a detenere - spostandolo nella sua funzione, e l'utilizzo di ritorno, per esempio. – Sinkingpoint
@ MarounMaroun Perché è possibile avere questo 20 volte in una funzione per passare 20 passaggi seriali. Se lo faccio in questo modo, l'ultimo se scorre già 20 schede a destra, il che rende il codice illeggibile. –
Non sono una persona religiosa, ma credo fermamente che "GOTO" non sia la risposta giusta per qualsiasi cosa relativa a Java. – WarrenFaith