È equiparare una variabile a una funzione che utilizza la stessa cattiva programmazione della variabile?

2

È una programmazione errata impostare una variabile uguale al risultato di una funzione che accetta la stessa variabile? Le lingue in questione sono c #, javascript e PHP (non sono sicuro che funzioni in famiglie C, personalmente).

var a = 1;
a = alterData(a);
    
posta user2410532 23.12.2015 - 16:51
fonte

2 risposte

8

"Improprio" come?

Non è illegale - cioè, non è una violazione della sintassi in una lingua con variabili mutabili di cui sono a conoscenza.

Non è rotto - cioè, la post-condizione dell'espressione sarà il risultato della funzione, e salvo alcuni strani effetti di concorrenza essere belli e coerenti.

Non è brutto o non idiomatico. In quasi tutte le lingue con cui ho familiarità (che hanno variabili mutabili), questo genere di cose è considerato leggibile e una cosa bella da fare fintanto che a ancora significa la stessa cosa . Riusare a per qualche altro concetto semantico (come è la velocità per la prima metà della funzione e l'accelerazione per la seconda metà) non è buona.

Se non altro, i programmatori si stanno muovendo maggiormente verso questa forma di programmazione e lontano da alterData(a) che usa effetti collaterali per cambiare a sotto le copertine.

Quindi vai avanti.

    
risposta data 23.12.2015 - 16:58
fonte
4

Per prima cosa, dovresti provare a usare nomi di variabili significativi. In questo caso, potresti avere original_a e altered_a (dove a dovrebbe essere qualcosa di rilevante, ovviamente).

In secondo luogo, il costo di una variabile locale è minimo nella maggior parte dei linguaggi di programmazione (e talvolta zero), quindi sentitevi liberi di usarli.

Terzo, usare lo stile funzionale delle variabili immutabili (assegnato una volta) ha valore. Apple's Swift, ad esempio, è un linguaggio moderno che incoraggia l'assegnazione di una singola variabile. Alcuni potrebbero sostenere che i programmi sono più facili da leggere / mantenere quando le variabili locali non vengono modificate; puoi vedere il valore del vecchio e del nuovo nel debugger, e se qualcosa non funziona, è più facile vedere dove.

Quindi, dico di no, è meglio introdurre un'altra variabile.

    
risposta data 23.12.2015 - 17:35
fonte

Leggi altre domande sui tag