Sono io, j = 1 veramente fuorviante? [chiuso]

11

C'è un argomento comune sull'inizializzazione di variabili multiple in un solo liner, ovvero:

Consider for example int i, j = 1; which might lead some people to mistakingly believe both variables are being initialized

Potremmo sostenere che qualcuno dovrebbe conoscere abbastanza la sintassi della sua lingua da non confondersi. Un altro argomento potrebbe essere come sviluppatori che impariamo così tante lingue che possiamo commettere errori tra le specificità tra le lingue.

Tuttavia, per quel caso molto specifico, mi chiedo quanto segue: esiste addirittura un linguaggio in cui la sintassi i, j = 1 inizializza entrambe le variabili?

Se non questo argomento non si applica.

    
posta Walfrat 06.03.2018 - 10:58
fonte

2 risposte

37

Penso di no, ma non è questo il punto. Il punto è che i, j = 0 è molto facilmente scambiato per i = j = 0 , che fa inizializza entrambi. La chiarezza è il requisito più importante sul codice sorgente accanto alla correttezza, e il fatto che questa domanda sembri persino dimostra che la chiarezza è subottimale.

    
risposta data 06.03.2018 - 11:02
fonte
2

Penso che puoi discutere per entrambi i lati:

  • Kontra i, j = 0 :
    I matematici usano questo per indicare che sia i che j dovrebbero essere zero.

  • Pro i, j = 0 :
    È semplice sapere la precedenza dei tuoi operatori. E se hai dubbi sulla loro precedenza, ora è il momento di cercarlo.

    È lo stesso motivo per cui scriviamo cose come a.b += c[i]*d[i]; senza le parentesi. Ovviamente questo è equivalente a (a.b) += ((c[i])*(d[i])); , ma ci si può aspettare che i programmatori conoscano a memoria la precedenza degli operatori più utilizzati e siano in grado di cercare la precedenza degli operatori quando non sono sicuri. Pertanto, le parentesi sono generalmente considerate inutili confusioni a meno che non impongano un ordine di valutazione diverso rispetto a quello prescritto dalla precedenza dell'operatore.

    Naturalmente, ci sono delle eccezioni. La precedenza di << e + è generalmente considerata abbastanza ambigua da parentesi warant in entrambi i casi. Ma questa è l'eccezione che dimostra la regola.

Io, per esempio, cado di più sul lato Pro, ma sono pronto a rispettare qualsiasi styleguide che proibisca tali dichiarazioni. Non è una questione che vale la pena di combattere.

    
risposta data 06.03.2018 - 16:30
fonte

Leggi altre domande sui tag