2012-01-10 16 views
5

Tutte le mie costanti sono vicino alla parte superiore del mio file javascript come di seguito.Perché JQuery non consolida le sue costanti?

Quando eseguo la ricerca nel file JQuery di base, non viene visualizzato nulla per Constant e non riesco a vedere che stiano tirando fuori le costanti? Non ne hanno, li hanno diffusi attraverso il codice, se è così, perché non li consolidano?

Non mi interessa il linguaggio di costruzione const ma il concetto di tirare fuori le tue costanti in un posto come di seguito.

var Constant = 
{ 
    VALIDATE_ON:     1, 
    JSON_ON:      0, 
    ROOT:       '', 
    PICTURES:      '../pictures/', 
    TEXT:       '../text/', 
    FAVICON:      '../images/logo_small.ico', 
    IMAGES:       '../images/', 
    GATEWAY:      'class.ControlEntry.php', 
    ENTER_KEY:      13, 
    SECOND:       1000, 
    MINUTE:       60, 
    HOUR:       3600, 
    DAY:       43200, 
    AML: 
    { 
     "PASS":      0, 
     "FAIL":      1, 
     "NOTDEFINED":    2 
    } 
}; 
+0

Il codice è più modulare e più facile avere molte persone diverse che lavorano su di esso se le costanti sono definite nell'oscilloscopio/modulo in cui sono utilizzate piuttosto che in un unico punto per l'intero progetto. Da quello che ho visto del progetto jQuery, è generalmente quello che stanno facendo (anche se non penso sia del tutto coerente). – jfriend00

+0

Nell'esempio di codice le costanti non possono essere ridimensionate (a seconda dello strumento utilizzato). Dovresti fare ognuno di loro una var separata. – Prinzhorn

risposta

4

Se si guarda al jQuery source code si vedrà anche alcune costanti che rappresentano per esempio diverse espressioni regolari all'inizio. È solo che non sono definiti nell'ambito globale per evitare di inquinarlo. Sono definiti all'interno della funzione jQuery. In questo modo non vi è alcun rischio di conflitti tra diversi script che potrebbero utilizzare gli stessi nomi nell'ambito globale.

Quindi, ovviamente, è una buona idea consolidare le costanti, ma non inquinare l'ambito globale.

+0

@downvoters_are_sissies, oops, mi dispiace. Non ho visto la definizione di 'Arc' :-) Devi aver modificato la tua domanda. Bene, ora è perfetto. Nessun problema con il tuo codice. –

+0

@downvoters_are_sissies, sì regexes, sono definiti come costanti per evitare di ripeterli. Indovina che le regex sono comuni in jQuery, ecco perché sono state definite in una singola posizione. –

+0

@downvoters_are_sissies, è tutto su scoping in javascript. Definisci le variabili/costanti solo nell'ambito appropriato che le richiederà. –

1

Questo dipende fortemente dallo stile di programmazione. jQuery ha alcune costanti all'inizio della funzione jQuery, ma ha anche molte "costanti" come stringhe sparse nell'intero file.

Personalmente mi piace mantenere le costanti alla fine del file.

In ogni caso è bene separare e consolidare le costanti se le userai in molti posti (voglio dire usare una costante in molti posti). Ma se lo userai una o due volte relativamente vicino nel tuo codice, è meglio metterlo vicino al suo utilizzo - sarà più facile da leggere, perché durante la lettura non sarai costretto a scorrere il codice dall'alto in basso.

In base al codice che hai fornito, hai tutte le costanti nello stesso posto. IMHO sarebbe meglio separarli in gruppi, ad es.

var Paths = { 
    ROOT:  '', 
    PICTURES: '../pictures/', 
    TEXT:  '../text/', 
    FAVICON: '../images/logo_small.ico', 
    IMAGES:  '../images/', 
    GATEWAY: 'class.ControlEntry.php' 
}; 

var TimeCounts = { 
    SECOND: 1000, 
    MINUTE: 60, 
    HOUR:  3600, 
    DAY:  43200 
}; 

var KeyCodes = { 
    ENTER_KEY: 13 
}; 

perché quando si utilizza sarà più prolisso (ovviamente ho capito che questo è solo codice di esempio, ma io voglio mostrare la mia idea).

Problemi correlati