Prenderò un corso sulle strutture di dati intermedi come prerequisito per l'ingresso nel programma CS MS presso un'università di cui tutti in America hanno sentito parlare. Una riga di codice scritta in classe ha attirato la mia attenzione:
if (a > 33 | b++ < 54) {...}
Questo non passerebbe una revisione del codice sul mio posto di lavoro. Se hai scritto un codice come questo in un'intervista, questo sarebbe un colpo significativo contro di te. (Oltre ad essere un condizionale con effetti collaterali, è intelligente a scapito della chiarezza.)
In effetti, non ho mai visto un condizionale con effetti collaterali e Googling non si presenta molto. Un altro studente è rimasto indietro dopo le lezioni per chiederglielo, quindi non sono l'unico a pensare che fosse strano. Ma il professore era piuttosto irremovibile sul fatto che fosse un codice accettabile e che avrebbe scritto qualcosa del genere al lavoro. (Il suo incarico con FT è come SWE principale presso una società di cui hai sentito parlare.)
Non riesco a immaginare un mondo in cui questa linea di codice sarebbe mai accettabile, per non dire desiderabile. Ho sbagliato? Va bene? Che dire del caso più generale: condizionali con effetti collaterali? Sono sempre OK?