Equazione di più variabili nuove con una vecchia

2

A volte mi imbatto in una situazione in cui ho bisogno di equiparare due nuove variabili con una vecchia. Quale delle seguenti (se esiste) è una buona pratica (la leggibilità del codice w.r.t. o qualsiasi altro fattore), in quali condizioni?

a=b;
c=b;

o

a=b;
c=a;

Nota, a , b e c sono solo i nomi scelti in questo esempio.

    
posta user13107 10.06.2013 - 04:55
fonte

3 risposte

5

Gli umani sono parser anche! Incoraggiare la massima leggibilità!

Viste le tue 2 scelte, preferirei il primo :

a = b;
c = b;

È più facile analizzare visivamente e capire che sia a che c ora hanno lo stesso valore di b . O almeno puoi vedere rapidamente che 2 oggetti separati ottengono lo stesso valore.

Nel secondo esempio, nulla di tutto ciò è immediatamente evidente.

Scorri l'ambiguità

Scorri anche one-liner ( a = b = c; ) per ragioni simili e perché nascondono più espressioni in una singola istruzione. Ciò facilita l'introduzione di errori di volo * e porta a sviluppare una (cattiva) abitudine di stipare troppo in uno spazio troppo piccolo per un falso senso di espressività.

* Per esempio, mi sono imbattuto spesso in cose del tipo:

  • a = b = b; (quando ovviamente un c era inteso da qualche parte),
  • e poi rapidamente vedrai cose come if (a == (b = c)) {} ... e ora hai un errore di battitura a partire da if (a = (b = c)) e quindi non hai assolutamente idea di quale fosse il comportamento previsto. Ah, e usa nomi di variabili descrittive, ovviamente.
risposta data 10.06.2013 - 06:48
fonte
3

Se la lingua consente questa sintassi (e la maggior parte lo fanno), preferirei molto questo:

a = c = b;
    
risposta data 10.06.2013 - 07:23
fonte
0

Sarei propenso a concordare con il raggiro. Sì, questo esempio è chiaro (ish):

a = b; 
c = b;

Ma introdurre più variabili e diventa orribile:

a = z;

b = z;

c = z;

.

.

.

w = z;

x = z;

y = z;

A che punto tracciare la linea e andare per la singola dichiarazione di assegnazione? 3 variabili? 4? 5?

L'impostazione di un limite arbitrario sembra essere falsa (e in contrasto con la Zero One Infinity Rule ).

    
risposta data 10.06.2013 - 11:59
fonte

Leggi altre domande sui tag