2012-12-31 11 views
10

In C++ si può fare assegnamento multiplo In questo modoPerché più assegnazioni in una riga sono considerate di cattivo stile?

x = y = z = 10; 

Eppure più persone mi hanno detto che è un cattivo stile e non dovrebbe essere utilizzando senza darmi una ragione.

Qualcuno può spiegarmi perché questo è considerato un cattivo stile?

+0

Mmn .. l'unica cosa negativa che potrei pensare è la leggibilità .. –

+1

Chi sono tutti? Non riesco a pensare ad un singolo problema con questo, ovviamente tranne che per la leggibilità. –

+1

Puoi approfondire un po 'su chi è "tutti"? perché questa è una tecnica di multi-assegnazione comune in solo circa un miliardo di righe di codice sorgente nel mondo di oggi. – WhozCraig

risposta

10

Non è uno stile intrinsecamente negativo, ma spesso è possibile rendere più chiaro il codice eseguendo un solo assegnamento per riga e lasciando che il compilatore di ottimizzazione risolva le cose. Se si utilizza lo stile di assegnazione multipla, a volte potrebbe non essere chiaro se x = y = z = 10; era intenzionale o se si trattava di un errore di battitura per qualcosa come x = y = z + 10;. Limitando sempre te stesso a un compito per affermazione, rendi evidente quando si verificano errori di battitura.

+0

Questo ha senso. Grazie per la risposta. :) – Caesar

5

Non c'è problema finché si sa che dovrebbero essere tutti dello stesso valore.

ad es.

cambiando

x = y = z = 10; 

a

x = y = z = 15; 

è molto facile.

Se, tuttavia, sono arbitrariamente uguali, le assegnazioni distinte lo comunicano e sono più facili da modificare individualmente per il test.

x = 10; 
y = 10; 
z = 10; 

a

x = 10; 
y = 15; 
z = 10; 

è meglio che dover spezzare la linea.

La chiave è ciò che stai dicendo al prossimo programmatore di guardare il codice (o te stesso in 6 mesi).

16

Provalo con queste definizioni:

int x; 
bool y; 
int z; 
x = y = z = 10; 

Ed essere sorpreso per il valore di x.

Problemi correlati