2009-10-08 18 views
13

Sé que esta pregunta no tiene respuesta, pero tengo curiosidad por saber lo que otras personas piensan.Convención de capitalización para objetos de JavaScript

En un lenguaje como Java, es una convención comenzar clases con letras mayúsculas y objetos con letras minúsculas. Pero, ¿qué pasa con JavaScript, donde todo es un objeto?

He visto que algunas personas sugieren que se capitalicen solo los objetos que se tratan como clases; es decir, objetos de función con un prototipo, que están destinados a ser utilizados con el nuevo operador . Las instancias de esos objetos serían minúsculas.

Eso suena lógico. Pero, ¿qué haces con los "objetos globales", donde solo hay una instancia? La mayoría de las personas parecen aprovecharlas (por ejemplo, Math o Ext.History). Esto intuitivamente se siente correcto, pero es difícil justificarlo con una regla consistente.

¿Y qué pasa con los objetos que se utilizan como espacios de nombres? Estas parecen ser todo el mapa: YUI, Ext.util, jQuery, etc.

Sírvanse proporcionar racionalizaciones seculares para sus puntos de vista religiosos sentidas.

Respuesta

27

Usted puede seguir este Google JavaScript Style Guide

En general, utilice functionNamesLikeThis, variableNamesLikeThis, ClassNamesLikeThis, EnumNamesLikeThis, methodNamesLikeThis y SYMBOLIC_CONSTANTS_LIKE_THIS.

+0

su enlace recomienda guardar nombres de archivos como 'filenameslikethis.js'. ¿Sabes por qué todo está en minúsculas? Creo que parece difícil de leer. – ayjay

+1

Está escrito "... y no debe contener ningún signo de puntuación excepto' -' o '_' (prefiera' -' a '_')". Por lo tanto, también recomienda 'file-name-like-this.js' –

+0

¿Qué pasa si una variable contiene una clase? 'var ConstructorClass = classMap ['className']' o 'var constructorClass = classMap ['className']'? –

1

Estoy de acuerdo con la capitalización de las funciones que definen "clases" (comillas aéreas usadas) que a su vez serán instanciadas más tarde utilizando el nuevo operador.

Pero eso es todo. Los objetos globales son simplemente globales. Nombrales lo que quieras.

Todo lo que me gustaría asegurar es que son únicos y lo suficientemente descriptivos como para que no sean sobrescritos accidentalmente por otro desarrollador en una fecha posterior.

0

La convención es que no hay convención. Haz lo que quieras, solo sé consistente. Sugiero seguir el estilo de Java e ignorar cualquier convención que esté utilizando la biblioteca (dojo, Ext, YUI, $, etc.) que esté utilizando.

Cuestiones relacionadas