L'operatore ternario dovrebbe essere utilizzato al di fuori delle dichiarazioni di assegnazione?

8

Modifica Questa non è una domanda di indipendentemente dal fatto che l'operatore ternario è dannoso . Riguarda se esiste o meno un consenso sull'opportunità o meno di utilizzarlo al di fuori delle dichiarazioni di assegnazione. / Modifica

Sulla base di un booleano, voglio chiamare una delle due diverse funzioni (senza valore di ritorno). Ho scritto questo bit di javascript:

(condition) ? doThis(arg) : doThat(arg)

Credo che sia più pulito che scrivere un'istruzione if-else:

if(condition) {
    doThis(arg);
}
else {
    doThat(arg);
}

I miei colleghi credono strongmente che le dichiarazioni ternarie dovrebbero essere utilizzate solo nelle dichiarazioni di assegnazione. Non riesco a trovare guide di stile che discuteranno questo, probabilmente perché linguaggi come Java e C # non lo consentono affatto (i loro compilatori richiedono agli operatori ternari di restituire un valore). Questo dovrebbe essere considerato un cattivo uso della dichiarazione ternaria? Perché?

    
posta BobbyA 25.08.2015 - 20:31
fonte

2 risposte

9

In generale, l'operatore condizionale è destinato a creare un'istruzione if con un valore . %codice%. Quindi, se lo stai usando per gli effetti collaterali, è contro-intuitivo. Valido, ma contro-intuitivo; e ricorda che stai scrivendo il codice per leggere i tuoi compagni di squadra.

    
risposta data 25.08.2015 - 20:56
fonte
2

Un paio di casi, che non sono incarichi, dove trovo utili gli operatori ternari sono:

In argomenti di funzioni: secondo me

f( e1, .. cond ? em : dm, .. en);

è meno soggetto a errori di

if ( cond) f( e1, .. em, .. en); else f( e1, .. dm, .. en);

Quando vuoi chiamare una funzione o un'altra con argomenti identici: di nuovo trovo

(cond ? f : g)( /* long and complex argument list */);

meno incline agli errori di

if ( cond) f( /* long and complex argument list */);
else g( /* long and complex argument list */);

Come vedo che la cosa chiave in ogni caso è che il? la forma ha meno ripetizioni. La ripetizione apre la possibilità di cambiare un'istanza e dimenticare di cambiare l'altra.

    
risposta data 26.08.2015 - 17:18
fonte

Leggi altre domande sui tag