convenciones de nomenclatura de Javascript

12

Soy de Java y soy nuevo en JavaScript. He observado muchos métodos de JavaScript que utilizan nombres de parámetros de un solo carácter, como en el siguiente ejemplo.

doSomething(a,b,c)

No me gusta, pero un compañero desarrollador de JavaScript me convenció de que esto se hace para reducir el tamaño del archivo, señalando que los archivos JavaScript deben transferirse al navegador.

Luego me encontré hablando con otro desarrollador. Me mostró la forma en que Firefox truncará los nombres de las variables para cargar la página más rápido. ¿Es esta una práctica estándar para los navegadores web?

¿Cuáles son las mejores prácticas de conversión de nombres que deben seguirse al programar en JavaScript? ¿Importa la longitud del identificador, y si es así, en qué medida?

    
pregunta ManuPK 13.03.2012 - 14:58

6 respuestas

26

Encontrarás que los propios desarrolladores no utilizan nombres de variables cortos. Mientras se desarrollan, utilizan nombres de variables significativos y detallados.

Luego , en el proceso de compilación / lanzamiento, el código que escribieron se ejecuta a través de un minifier / ofuscador con la intención de minimizar el tamaño del archivo, como un mejores prácticas para acelerar un sitio web. Este es un paso opcional si le importa que mucho sobre el rendimiento. La mayoría de los sitios web pequeños no hacen esto.

Usted , como desarrollador, no debería preocuparse por el proceso de minificación / ofuscación; escriba su código para que sea legible, significativo, bien documentado y bien estructurado. Luego si te importa mucho el rendimiento (opcional, ¡no lo olvides!), introduce un minificador / ofuscador en tu proceso de lanzamiento para minimizar el código (eliminar espacios en blanco, nuevas líneas, comentarios, etc.) y para ofuscarlo (por ejemplo, acortar nombres de variables). Un buen artículo que explica la ofuscación frente a la minificación puede ser encontrado aquí .

Además, Desktop FireFox not truncará los nombres de variable período . El truncamiento de los nombres de las variables está ahí para acelerar la descarga de la página. Cuando FireFox recibe el archivo, ya se ha descargado, por lo que no es necesario hacerlo. Tu amigo puede ejecutar un complemento que está haciendo esto; En ese caso, dile que lo desinstale, porque es inútil.

Para completar, los navegadores (móviles) tienen la opción de usar servidores intermedios, que interceptan las respuestas de los recursos solicitados y los comprimen por usted (que podría incluir la minificación de archivos JavaScript). Tenga en cuenta que la compresión se realiza en el servidor (es decir, antes ha descargado la página), de ahí el beneficio potencial de descargar un archivo más pequeño, en lugar de en el browser una vez que ya haya descargado el archivo (como se sugiere en la pregunta). Dichos navegadores móviles incluyen Opera Mini y versiones más recientes de Google Chrome (al menos en iOS; no estoy seguro acerca de Android). Para obtener más información, consulte aquí .

    
respondido por el Matt 13.03.2012 - 18:33
11

No, no todos los navegadores acortarán automáticamente el JavaScript para ayudar con el rendimiento.

Sin embargo, en el caso de JavaScript, no debe sacrificar la legibilidad / mantenibilidad del código para obtener ganancias en la velocidad de procesamiento o la seguridad, ya que existen herramientas denominadas ofuscadores y otras herramientas llamadas shinkers (o compresso rs) que fueron diseñados para este propósito.

Recuerda, no pre-optimices. Si su página se está cargando lo suficientemente rápido y no tiene ningún contenido demasiado sensible en su JavaScript, no se preocupe por eso. Nombra tus variables con nombres significativos. La legibilidad del código es muy importante para el mantenimiento y rara vez, si es que alguna vez, se sacrifica.

Si desea una referencia a algunas buenas convenciones de codificación de JavaScript, recomiendo usar estas .

    
respondido por el CFL_Jeff 13.03.2012 - 15:02
2

No te preocupes por el tamaño del archivo prematuramente. Si bien siempre es una preocupación, la legibilidad y la capacidad de mantenimiento son más importantes.

Dicho esto, probablemente debería estar sirviendo minified (por ejemplo, a través de YUI Compressor ) versiones de sus scripts de todos modos.

Si está interesado en las mejores prácticas para el desarrollo web en general, sugiero leer ¿Qué deben saber todos los programadores sobre el desarrollo web?

    
respondido por el Craige 13.03.2012 - 15:43
1

Trabajé en JavaScript durante mucho tiempo.

Teníamos un estándar de denominación que tenías que usar Notación Húngara para todas las variables.

Parecía funcionar bien. Sé que hay casos en contra de usar eso, pero funcionó bien para nosotros. Especialmente cuando tienes archivos de JavaScript masivos donde necesitas encontrar cosas.

Me gustaría advertir contra la optimización prematura. Es muy probable que termines con un código desordenado que en realidad no se ejecuta mucho más rápido.

    
respondido por el Alan Delimon 13.03.2012 - 18:08
1

La longitud del identificador no importa. Como han dicho otros, en la producción, Minification se puede utilizar para reducir el tiempo de descarga del script. De hecho, se debe seguir una convención de codificación / nomenclatura aceptable, especialmente porque JavaScript es un lenguaje peculiar y durante tanto tiempo se ha descuidado a JavaScript como una cosa para hacer el trabajo. Si busca un lugar para la convención de nombres, Guía de estilo de Google JavaScript es un buen lugar. Sugiere,

  • functionNamesLikeThis, por ejemplo, getCashbackData () {}
  • variableNamesLikeThis, por ejemplo, var alertInterval = 10;
  • ClassNamesLikeThis, por ejemplo, var CustomerOrder = {getOrderLines: function () {}}
  • EnumNamesLikeThis, por ejemplo, var ColorOfChoice = {White: "#FFFFFF"}
  • methodNamesLikeThis, por ejemplo, var CustomerOrder = {getOrderLine: function () {}}
  • SYMBOLIC_CONSTANTS_LIKE_THIS, por ejemplo, var EPOCH_UNIX="01011970"
respondido por el theD 04.10.2012 - 10:31
0

Enfurecido por la filosofía del "desarrollador de código limpio" (y dado que ahora sabe por las publicaciones anteriores que debido a la reducción del tamaño de sus nombres de variables tendrá un impacto nulo en el rendimiento) solo podría recomendar:

  1. Encuentre el mejor IDE para sus necesidades de desarrollo personal que tenga funciones de autocompletado e inteligencias decentes, como aptana, netbeans, eclipse (todo gratis) o cualquiera de los numerosos productos comerciales (si tuviera un juego gratuito, Me gustaría ver en los productos de JetBrains)
  2. Escriba su código de una manera que haga que cualquier comentario sea superfluo. Eso significa, en lugar de escribir

    getXy(e) { return [e.pageX, e.pageY ] }
    

    lo que podría significar realmente cualquier cosa (especialmente en un lenguaje locamente escrito como js;) hace que el código se exprese por sí solo

    getPageCoordinatesFromEvent(event) { 
        return [event.pageX, event.pageY ];
    }
    

    En un buen IDE, normalmente nunca escribiría un nombre de variable tan largo como dos veces, cuando escriba algunas letras y solo presione Entrar desde la función de autocompletar. Si usted insiste en escribir todos los caracteres, un buen IDE le notificará un error tipográfico. Este es solo un ejemplo muy superficial, por lo tanto, sugiero fuertemente (no como una forma de crítica sino como una recomendación honesta) que usted

  3. Obtenga los libros "Clean Code" de Robert C.Martin y o "Pragmatic Programmer" de Hunt / Thomas y nunca se vuelva a hacer este tipo de preguntas: estará demasiado ocupado trabajando en una integración continua servidor para automatizar la prueba aburrida-, & construya partes del proceso de desarrollo (incluida la reducción) y concéntrese en la parte divertida, ¡escriba un código claramente comprensible que haga grandes cosas!

P.S. Si necesita ponerse al día con el desarrollo del código javascript de última tecnología, eche un vistazo al libro de John "Mr. jQuery" Resig sobre "Técnicas Pro Javascript" justo después o junto con lo anterior.

    
respondido por el Philzen 26.06.2012 - 03:15

Lea otras preguntas en las etiquetas