Aikido

Warum man den Zweck einer Funktion selbsterklärend machen sollte, für klareren Code

Lesbarkeit

Regel
Machen eine Funktion Zweck selbstverständlich.
Funktion Namen sollten klar kommunizieren , was die Funktion
tut ohne Leser Leser zu zu die Implementierung

Unterstützte Sprachen: 45+

Einleitung

Funktionsnamen, die ihren Zweck nicht offenbaren, zwingen Entwickelnde, die gesamte Implementierung zu lesen, um das Verhalten zu verstehen. Eine Funktion namens process() oder handle() könnte alles tun, was geistige Anstrengung erfordert, um seinen tatsächlichen Zweck abzuleiten. Klare, beschreibende Namen wie validateUserEmail() oder calculateOrderTotal() Absicht sofort kommunizieren, wodurch Code selbstdokumentierend wird.

Warum es wichtig ist

Code-Wartbarkeit: Unklare Funktionsnamen verlangsamen das Verständnis. Entwickelnde verschwenden Zeit damit, Implementierungen zu lesen, um zu verstehen, was Funktionen tun, anstatt sich auf die Geschäftslogik zu konzentrieren. Dies verstärkt sich, wenn man Monate später zum Code zurückkehrt oder wenn neue Teammitglieder hinzukommen.

Falsche Verwendung: Mehrdeutige Funktionsnamen erhöhen die Wahrscheinlichkeit einer Fehlverwendung. Eine Funktion namens update() könnte validieren, transformieren, persistieren oder benachrichtigen, was dazu führt, dass Entwickelnde es falsch verwenden, da der Name das Verhalten nicht spezifiziert. Klare Namen verhindern Missbrauch, indem sie Einschränkungen und Nebenwirkungen dokumentieren.

Code-Beispiele

❌ Nicht konform:

function process(data) {
    const result = data.map(item => ({
        ...item,
        processed: true,
        timestamp: Date.now()
    }));
    db.save(result);
    notifyService.send(result);
    return result;
}

Warum es falsch ist: Der Name process() Gibt nichts darüber preis, was mit den Daten geschieht. Leser müssen die Implementierung untersuchen, um zu erfahren, dass sie Elemente transformiert, in der Datenbank speichert und Benachrichtigungen sendet. Die Nebeneffekte und Verantwortlichkeiten der Funktion sind verborgen.

✅ Konform:

function markItemsAsProcessedAndSave(data) {
    const processedItems = data.map(item => ({
        ...item,
        processed: true,
        timestamp: Date.now()
    }));
    db.save(processedItems);
    notifyService.send(processedItems);
    return processedItems;
}

Warum das wichtig ist: Der Name besagt explizit, dass die Funktion Elemente als verarbeitet markiert und speichert. Lesende verstehen den Hauptzweck der Funktion sofort, ohne die Implementierung zu lesen. Der Name deutet auf Nebenwirkungen hin (Speichern in der Datenbank) und setzt angemessene Erwartungen.

Fazit

Funktionsnamen sollten die Frage „Was tut dies?“ beantworten, ohne dass eine Code-Inspektion erforderlich ist. Fügen Sie Verben hinzu, die Aktionen beschreiben, und Substantive, die Ziele beschreiben. Wenn ein Name zu lang wird, tut die Funktion wahrscheinlich zu viel und sollte aufgeteilt werden.

FAQs

Haben Sie Fragen?

Wie lang dürfen Funktionsnamen sein?

So lange wie nötig, um klar zu sein. calculateTotalPriceWithTaxAndShipping() ist besser als calc(). Moderne IDEs verfügen über Autovervollständigung, was längere Namen einfach einzugeben macht. Klarheit vor Kürze priorisieren. Wenn ein Name 5-6 Wörter überschreitet, könnte die Funktion zu viele Verantwortlichkeiten haben.

Sollten Funktionsnamen Implementierungsdetails enthalten?

Nein, beschreiben Sie Verhalten und Absicht, nicht die Implementierung. Benennen Sie Funktionen danach, was sie leisten, nicht wie. sortUsersByName() ist besser als quickSortUsers(). Implementierungsdetails können sich ändern, aber der Zweck bleibt stabil. Dies hält Namen beim Refactoring relevant.

Was ist mit Hilfsfunktionen oder Utility-Funktionen?

Sie benötigen immer noch klare Namen. Anstatt helper() oder util() sollten spezifische Namen wie formatCurrency() oder validateEmail() verwendet werden. Wenn kein spezifischer Name gefunden werden kann, ist der Zweck der Funktion möglicherweise unklar und muss besser definiert werden.

Wie benenne ich Funktionen, die mehrere Dinge tun?

Teilen Sie sie auf. Funktionen, die Namen wie validateAndTransformAndSave() benötigen, verletzen das Single Responsibility Principle. Erstellen Sie separate Funktionen: validate(), transform(), save(). Wenn die Operationen zusammen ausgeführt werden müssen, verwenden Sie eine Orchestrator-Funktion mit einem Namen, der den Workflow beschreibt: processUserRegistration().

Werden Sie jetzt sicher.

Sichern Sie Ihren Code, Ihre Cloud und Ihre Laufzeit in einem zentralen System.
Finden und beheben Sie Schwachstellen schnell und automatisch.

Keine Kreditkarte erforderlich | Scan-Ergebnisse in 32 Sek.