Skip to content

Formateo

El formateo es subjetivo. Al igual que muchas reglas aquí, no existe una norma estricta que debas seguir. El punto principal es NO DISCUTIR sobre el formateo. Existen montones de herramientas para automatizar esto. ¡Usa una! Es una pérdida de tiempo y dinero que los ingenieros discutan sobre el formateo.

Para aspectos que no entran en el ámbito del formateo automático (indentación, tabuladores vs. espacios, comillas dobles vs. simples, etc.), consulta aquí para obtener orientación.

Mantener una capitalización consistente

JavaScript no está tipado, por lo que la capitalización proporciona mucha información sobre variables, funciones, etc. Estas reglas son subjetivas, así que tu equipo puede elegir lo que prefiera. Lo importante es mantener coherencia sea cual sea la elección.

Malo:

javascript
const DAYS_IN_WEEK = 7;
const daysInMonth = 30;

const songs = ["Back In Black", "Stairway to Heaven", "Hey Jude"];
const Artists = ["ACDC", "Led Zeppelin", "The Beatles"];

function eraseDatabase() {}
function restore_database() {}

class animal {}
class Alpaca {}

Bueno:

javascript
const DAYS_IN_WEEK = 7;
const DAYS_IN_MONTH = 30;

const SONGS = ["Back In Black", "Stairway to Heaven", "Hey Jude"];
const ARTISTS = ["ACDC", "Led Zeppelin", "The Beatles"];

function eraseDatabase() {}
function restoreDatabase() {}

class Animal {}
class Alpaca {}

Las funciones que llaman y las llamadas deben estar cerca

Si una función llama a otra, mantén estas funciones verticalmente cercanas en el archivo fuente. Idealmente, coloca la función que llama justo encima de la función llamada. Tendemos a leer código de arriba a abajo, como un periódico. Por este motivo, estructura tu código siguiendo este flujo natural de lectura.

Malo:

javascript
class PerformanceReview {
  constructor(employee) {
    this.employee = employee;
  }

  lookupPeers() {
    return db.lookup(this.employee, "peers");
  }

  lookupManager() {
    return db.lookup(this.employee, "manager");
  }

  getPeerReviews() {
    const peers = this.lookupPeers();
    // ...
  }

  perfReview() {
    this.getPeerReviews();
    this.getManagerReview();
    this.getSelfReview();
  }

  getManagerReview() {
    const manager = this.lookupManager();
  }

  getSelfReview() {
    // ...
  }
}

const review = new PerformanceReview(employee);
review.perfReview();

Bueno:

javascript
class PerformanceReview {
  constructor(employee) {
    this.employee = employee;
  }

  perfReview() {
    this.getPeerReviews();
    this.getManagerReview();
    this.getSelfReview();
  }

  getPeerReviews() {
    const peers = this.lookupPeers();
    // ...
  }

  lookupPeers() {
    return db.lookup(this.employee, "peers");
  }

  getManagerReview() {
    const manager = this.lookupManager();
  }

  lookupManager() {
    return db.lookup(this.employee, "manager");
  }

  getSelfReview() {
    // ...
  }
}

const review = new PerformanceReview(employee);
review.perfReview();