Dedico questo post ad un amico che ogni volta che trova una forma di "if contratto" spegne il computer e va a farsi una passeggiata dalla rabbia che gli sale. Vediamo di spiegare meglio questa tecnica che ritengo molto elegante ed utile.
Un "if contratto" è una forma particolare del costrutto if-else che, invece di essere distribuito su più righe viene appunto contratto in una sola. Questa particolarità può essere applicata a tutti i linguaggi derivati dal C come l'ANSI C, C++, C#, Java, ecc... per questo motivo mi limiterò ad inserire un solo esempio comune a tutti i linguaggi.
Vediamo come si presenta: nella colonna di sinistra abbiamo la forma IF tradizionale mentre in quella di destra quella contratta.
|
|
A livello di esecuzione questi due codici sono equivalenti. C'è da dire però che questa forma di IF è utilizzabile esclusivamente per l'assegnazione infatti non può essere utilizzata per:
|
|
Questo perchè il carattere (?) è un operatore condizionale ternario di assegnazione, la definizione è dunque "una istruzione che restituisce un valore a seconda di una condizione booleana".
Conclusione
Molti programmatori definiscono l'utilizzo di questa tecnica "UCAS" (ufficio complicazione affari semplici) ma io credo che renda il codice molto più elegante e semplice, ti permette di focalizzarti sui reali if e non su una assegnazione pilotata da una condizione. Naturalmente, come tutte le cose, c'è sempre chi esagera:int percentage = 80;
String output = (((percentage > 50) ? "first half" : "second half") == "first half") ? ((percentage > 25) ? "second quarter" : "first quarter") : ((percentage > 75) ? "fourth quarter" : "third quarter");
Nessun commento:
Posta un commento