Ciao,
il codice l'ho preso da un libro, e purtroppo è scritto proprio così.....volevo capire meglio le label visto che non si utilizzano molto.
bb
Ciao,
il codice l'ho preso da un libro, e purtroppo è scritto proprio così.....volevo capire meglio le label visto che non si utilizzano molto.
bb
E' vero che non si utilizzano molto e, se non si usano molto, un motivo c'è.
Ed è proprio il fatto che rendono meno "strutturato" il codice (o, meglio, rendono più difficile seguire il filo logico del programma).
Ad ogni modo, una label serve ad etichettare un'istruzione (o un blocco di istruzioni) in modo tale che quell'istruzione (o blocco) possa essere terminata forzatamente tramite l'uso di un break.
Se ne può tranquillamente fare a meno (e, in generale, è meglio farne a meno), quindi, se non per scopi puramente "informativi" (del tipo: so che ci sono, so come funzionano e non le userò mai), ti consiglierei di saltare a pié pari l'argomento e non darci troppo peso.
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Aggiungo ancora una cosa, per far capire che le label possono tranquillamente essere evitate se non si necessita di avere "migliori performances" in ambiente critico.
codice:miaLabel: while( condizione ) { while( altra_condizione ) { if (condizione3 ) break miaLabel; ... } }
C'è un ciclo while. All'interno del ciclo while, c'è un secondo ciclo while. Se dentro al while più interno viene verificata una determinata condizione (condizione3) allora viene terminato il ciclo while più esterno (ed, ovviamente, anche il relativo ciclo interno).
Questo codice può essere riscritto, in modo più chiaro e lineare, in questo modo:
codice:boolean flag = true; while(flag && condizione) { while(flag && altra_condizione) { if (condizione3) { flag = false; } else { ... } } }
E' meno performante, poichè il break fa terminare immediatamente e forzatamente tutto, mentre in questo modo, verrebbe prima ri-analizzata la condizione del while interno (che terminerebbe), quindi ri-analizzata la condizione del while esterno (che terminerebbe). Però il secondo blocco di codice permette di seguire più facilmente il flusso logico del codice (l'esempio è troppo banale per rendersene conto, ma se il corpo dei due while fosse più complesso, le cose cambierebbero).
Si dovrebbe sempre preferire un codice "facile e manutenibile", laddove le performances non giochino un ruolo altamente essenziale. Come ogni cosa, non c'è solo il lato buono o il lato cattivo: sono le cattive abitudini (e l'abuso), in genere, a creare codice di dubbia qualità.
Ciao.![]()
Ultima modifica di LeleFT; 24-07-2014 a 13:04
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza