Directrices de codificación de JavaScript

La mayoría de nuestras pautas de javascript son aplicadas por varios linters. Actualmente estamos usando eslint. Le recomendamos que se familiarice con la configuración.

Versión de NodeJS

Por lo general, nos esforzamos por admitir la versión más reciente de Active LTS NodeJS.

Diseño de archivo/directorio

Si un archivo javascript contiene una sola clase, el archivo debe tener el nombre de la clase y ser UpperCamelCase. Si un archivo javascript contiene funciones de utilidad, el archivo debe recibir un nombre descriptivo y ser snake_case.

Esperamos jerarquías paralelas de directorios fuente y de prueba. Por ejemplo,

raíz
  - analizador # nombre del paquete, directorio que contiene el código fuente
    Parser.js # contiene la clase Parser
    - rápido
      - ast.js # contiene varias exportaciones

  - pruebas # directorio que contiene pruebas para el código fuente
    - Parser_spec.js # pruebas unitarias para parser/Parser.js
    - rápido
      - ast_spec.js # pruebas unitarias para parser/ast/ast.js

  - paquete.json

Denominación

  1. Los nombres de las clases deben ser UpperCamelCase.

  2. Las constantes deben ser TITLE_CASE.

  3. Todo lo demás debe ser minúsculaCamelCase.

Variables

Prefiere const y solo usa let de forma excepcional.

Módulos

Dado que la mayor parte de nuestro código javascript se ha ejecutado históricamente en NodeJS y se escribió antes de que NodeJS agregara soporte de primera clase para los módulos ES6, la mayoría del código existente usa las convenciones del módulo CommonJS.

Para proyectos donde ya se usa CommonJS, recomendamos continuar usando CommonJS. Para nuevos proyectos, recomendamos usar módulos ES6.

Gerente de empaquetación

Recomendamos usar npm en lugar de yarn para administrar paquetes.

polirellenos

Por lo general, no usamos polyfills y cosas como Babel para el código que se ejecuta en NodeJS. Hemos encontrado que la transpilación a menudo viola el principio de menor sorpresa, así que trate de evitarlo en la mayoría de los casos.