2012-01-10 10 views
5

Todas mis constantes están cerca de la parte superior de mi archivo javascript como a continuación.¿Por qué JQuery no consolida sus constantes?

Cuando busco en el archivo JQuery básico, no pasa nada para Constant y no veo que estén sacando constantes? ¿No tienen ninguno, los tienen diseminados a través del código? Si es así, ¿por qué no los consolidan?

No me preocupa la construcción de lenguaje const pero el concepto de extraer sus constantes en un lugar como el siguiente.

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

El código es más modular y más fácil de tener muchas personas diferentes trabajando en él si las constantes se definen en el alcance/módulo donde se utilizan en lugar de en un solo lugar para todo el proyecto. Por lo que he visto del proyecto jQuery, generalmente es lo que están haciendo (aunque no creo que sea del todo coherente). – jfriend00

+0

En su ejemplo de código, las constantes no se pueden minimizar (según la herramienta que use). Debes hacer que cada una de ellas sea una var. – Prinzhorn

Respuesta

4

Si nos fijamos en la jQuery source code también verá algunas constantes que representan por ejemplo, diferentes expresiones regulares en el principio. Es solo que no están definidos en el alcance global para evitar contaminarlo. Se definen dentro de la función jQuery. De esta forma, no hay riesgo de conflictos entre diferentes scripts que podrían usar los mismos nombres en el ámbito global.

Por lo tanto, por supuesto que es una buena idea consolidar sus constantes, solo no contamine el alcance global.

+0

@downvoters_are_sissies, vaya, lo siento. No vi la definición de 'Arc' :-) Debes haber editado tu pregunta. Bueno, ahora es perfecto. Sin problemas con tu código –

+0

@downvoters_are_sissies, sí, expresiones regulares, se definen como constantes para evitar repetirlas. Supongo que las expresiones regulares son comunes en jQuery, es por eso que se han definido en una sola ubicación. –

+0

@downvoters_are_sissies, se trata de scoping en javascript. Defina variables/constantes solo en el alcance apropiado que los requerirá. –

1

Esto depende en gran medida del estilo de programación. jQuery tiene algunas constantes al inicio de la función jQuery, pero también tiene muchas 'constantes' como cadenas dispersas por todo el archivo.

Personalmente, me gusta mantener las constantes al final del archivo.

De todos modos, es bueno separar y consolidar las constantes si las va a usar en muchos lugares (me refiero a usar una constante en muchos lugares). Pero si lo va a utilizar una o dos veces en su código, es mejor acercarlo constantemente a su uso; será más fácil de leer, porque durante la lectura no se verá obligado a desplazarse hacia arriba o hacia abajo.

Según el código que proporcionó, tiene todas las constantes en un solo lugar. En mi humilde opinión, sería mejor separarlos en grupos, por ej.

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 
}; 

ya que al usar será más detallado (por supuesto que entiendo que esto es sólo código de ejemplo pero yo quiero mostrar mi idea).

Cuestiones relacionadas