Devo dichiarare le variabili nella parte superiore della funzione per motivi diversi dalle regole dell'ambito?

3

In JavaScript, una dovrebbe dichiarare tutte le variabili all'inizio della funzione per mitigare il rischio di errori legati al fatto che l'ambito delle variabili è una funzione. Il seguente codice illustra questo ambito non intuitivo stampando effettivamente "Hello, World" sulla console:

var demo = function () {
    if (false) {
        var hello = "Hello, World";
    }

    console.log(hello);
};

Allo stesso modo, in VB6 (ma non in VB.NET) , le variabili hanno uno scopo di una funzione / sub, il che significa anche che sarebbero meglio dichiarati nella parte superiore della funzione / sotto blocco.

C, C ++ , Java, C #, Python o PHP non hanno motivo di spostare la dichiarazione delle variabili all'inizio del metodo / funzione: preferibilmente le variabili vengono dichiarate vicino alla posizione in cui vengono utilizzate.

Esistono linguaggi in cui è meglio dichiarare le variabili nella parte superiore del blocco del tipo di funzione (anziché dichiararle il più vicino possibile alla posizione in cui vengono utilizzate) per un motivo diverso dall'ambito dell'ambito della funzione?

In altre parole, l'ambito non intuitivo è simile a quello utilizzato da VB6 e JavaScript l'unico motivo per spostare la dichiarazione delle variabili nella parte superiore di una funzione?

    
posta Arseni Mourzenko 16.10.2015 - 10:07
fonte

2 risposte

7

Ogni linguaggio del computer ha i suoi punti di forza e le insidie. Ognuno ha i propri standard / pratiche di codifica spesso accettati, costruiti e dettati dalla comunità circostante. Perché la programmazione è un'arte precisa direi, a meno che non ci sia una buona ragione per fare qualcosa, non dovresti.

Ora ci sono ottimi motivi per dichiarare le variabili vicino a dove sono usate:

  • Semplifica la determinazione del tipo, durante la lettura del codice.
  • Semplifica l'eliminazione del codice, compresa la dichiarazione, tutti insieme.

Ma come suggerisci, per alcune lingue ci sono ragioni migliori per non farlo, per motivi di chiarezza o di scopo. Un altro motivo potrebbe essere quello di riservare memoria o registri presto, di nuovo dipende dalla lingua che si sta utilizzando. Una nuova lingua può venire con la semantica non-C e può richiedere un approccio diverso a quello in cui le variabili vengono dichiarate.

Raccomando anche sempre di seguire gli standard di codifica stabiliti dalla community per la tua lingua preferita.

    
risposta data 16.10.2015 - 11:13
fonte
2

Il fraseggio "Ci sono lingue in cui è meglio ..." suggerisce che la tua domanda potrebbe non avere una risposta definita (non soggettiva). Meglio in che senso?

In alcune lingue, potresti ottenere un vantaggio ordinando le dichiarazioni delle variabili in modo tale da ottimizzare l'utilizzo della memoria, ma con i compilatori moderni questo dovrebbe essere preso in considerazione per te.

Quindi mi sembra che sia una questione di stile e preferenze personali.

La mia preferenza personale , avendo dentato su Macintosh Pascal, è stata quella di dichiarare le variabili all'inizio, indipendentemente da dove saranno usate (in ogni caso i metodi dovrebbero essere brevi, quindi essere "troppo lontano"). Per me, questo fornisce una buona panoramica di "quali pezzi sono in gioco", per così dire.

Tuttavia, ora che lavoro in Java, mi sforzo di mettere le mie variabili nel più piccolo ambito ragionevole (forse appena fuori dal ciclo in cui verranno utilizzate). Come spieghi, questo approccio non funziona con JavaScript, quindi c'è un compromesso tra "panoramica umana" e "efficienza linguistica".

    
risposta data 16.10.2015 - 10:44
fonte

Leggi altre domande sui tag