Pureline

Pureline JavaScript

const-first, Semikolons, Braces, async/await.

Pureline JavaScript ist explizit, wo die Sprache Nachlässigkeit erlaubt: Blöcke immer mit Braces, Semikolons immer, `const` als Default und ein linearer Kontrollfluss über async/await.

const-firstSemikolonsBracesasync/await
7Profilregeln
16automatisiert
JavaScript-Code prüfen

Profilregeln

PL-JS-001 Checker

Braces sind Pflicht

Jeder Kontrollfluss-Body bekommt einen Block, auch bei genau einer Anweisung.

Avoid
if (!user) return;
while (queue.length) process(queue.shift());
Pureline
if (!user) {
    return;
}
PL-JS-002 Checker

Semikolons verwenden

Pureline JavaScript setzt Semikolons konsequent und verlässt sich nicht auf Automatic Semicolon Insertion.

Avoid
const session = createSession(user)
session.start()
ASI-Falle
const total = base + tax
[fee, tip].forEach(add)
Pureline
const session = createSession(user);
session.start();
PL-JS-003 Checker

const zuerst

const ist der Default. let nur bei echter Neuzuweisung. var wird nicht verwendet.

Avoid
var user = loadUser();
let ohne Neuzuweisung
let session = createSession(user);
session.start();
Pureline
const user = loadUser();
Echte Neuzuweisung
let count = 0;
count++;
PL-JS-004 Checker

async / await bevorzugen

Promise-Ketten werden vermieden, wenn async/await einen klareren Kontrollfluss erzeugt.

Avoid
function loadUser(id) {
    return fetch(`/users/${id}`)
        .then(response => response.ok ? response.json() : null);
}
Pureline
async function loadUser(id) {
    const response = await fetch(`/users/${id}`);

    if (!response.ok) {
        return null;
    }

    return response.json();
}
PL-JS-005 Checker

Arrow Functions im Kontext

Benannte Logik darf eine normale Funktion sein. Arrow Functions sind ideal für lokale Callbacks, aber nicht der Default für alles.

Avoid
Arrow Functions als Default für alles
const createSession = (user) => {
    const session = new Session(user);
    session.start();
    return session;
};
Pureline
function createSession(user) {
    return new Session(user);
}
Lokaler Callback
users.filter(user => user.active());
PL-JS-006 Checker

Destructuring muss Klarheit schaffen

Destructuring ist gut, wenn es die Absicht zeigt. Große Objekte werden nicht destrukturiert, nur weil die Sprache es erlaubt.

Avoid
const { id, name, email, role, createdAt, updatedAt, settings: { theme, locale } } = user;
Pureline
const { id, name } = user;
PL-JS-007

Folder Density

Ein JavaScript-Feature- oder Quellordner enthält standardmäßig höchstens **10 produktive Source-Module**.

Barrel-Dateien wie index.js, Tests, generierte Dateien und reine Metadaten-Dateien zählen nicht mit.

Wird das Limit überschritten, wird nach Verantwortung geteilt, nicht nach willkürlicher Dateizahl.

Pureline
Aufteilung nach Verantwortung
session/
    index.js
    state/
    transport/
    storage/

Core-Regeln im JavaScript-Checker

Zusätzlich zu den Profilregeln prüft der Checker für JavaScript diese Regeln aus dem Pureline Core: