Aikido

Aufteilung großer Codedateien: Organisation des Codes im Interesse der Wartbarkeit

Lesbarkeit

Regel

Vermeiden Sie übermäßig große Dateien.
Große Dateien mit mehreren Verantwortlichkeiten
sind schwer zu pflegen.

Unterstützte Sprachen: 45+

Einführung

Dateien, die Tausende von Zeilen umfassen, befassen sich in der Regel mit mehreren nicht zusammenhängenden Problemen, was es schwierig macht, bestimmte Funktionen zu finden. Eine 3000-Zeilen utils.js Datei, die Validierungshilfen, String-Formatierung, Datumsmanipulation und API-Dienstprogramme enthält, zwingt die Entwickler dazu, durch nicht zusammenhängenden Code zu blättern, um das zu finden, was sie brauchen. Große Dateien führen auch zu Konflikten bei der Zusammenführung, da mehrere Entwickler gleichzeitig verschiedene Abschnitte ändern.

Warum das wichtig ist

Wartbarkeit des Codes: Große Dateien vermischen nicht zusammenhängende Funktionen, so dass Entwickler Hunderte von Zeilen irrelevanten Codes verstehen müssen, um eine Funktion zu ändern. Die Suche nach einer bestimmten Logik wird zu einer Suchübung, anstatt zu einer entsprechend benannten Datei zu navigieren.

Konflikte bei der Versionskontrolle: Wenn mehrere Entwickler an verschiedenen Funktionen in derselben großen Datei arbeiten, kommt es häufig zu Konflikten bei der Zusammenführung. Kleinere, konzentrierte Dateien ermöglichen eine parallele Entwicklung, da jeder Entwickler in separaten Dateien arbeitet.

Effizienz der Codeüberprüfung: Die Überprüfung von Änderungen in großen Dateien erfordert mehr Kontext. Die Prüfer müssen verstehen, wie sich Änderungen auf anderen, nicht verwandten Code in derselben Datei auswirken. Kleinere Dateien machen den Umfang der Änderungen deutlich und beschleunigen die Überprüfung.

Code-Beispiele

❌ Nicht konform:

// utils.js (über 1500 Zeilen)
Funktion validateEmail(E-Mail) { /* ... */ }
Funktion validatePhone(Telefon) { /* ... */ }
Funktion formatCurrency(Betrag) { /* ... */ }
Funktion formatDate(Datum) { /* ... */ }
Funktion parseJSON(str) { /* ... */ }
Funktion apiRequest(url) { /* ... */ }
Funktion Entprellung(fn, Verzögerung) { /* ... */ }
Funktion Drossel(fn, Grenze) { /* ... */ }
// ... 100+ weitere nicht verwandte Funktionen

Warum das falsch ist: Eine große Datei enthält Validierungs-, Formatierungs-, Parsing-, API-Aufrufe und Leistungsdienstprogramme. Suche nach entprellen() erfordert das Blättern durch Hunderte von nicht zusammenhängenden Funktionen. Wenn mehrere Teams diese Datei ändern, kommt es ständig zu Konflikten bei der Zusammenführung.

✅ Konform:

// validation/email.js
exportieren Funktion validateEmail(E-Mail) { /* ... */ }

// validierung/phone.js
exportieren Funktion validatePhone(Telefon) { /* ... */ }

// formatierung/waehrung.js
exportieren Funktion formatCurrency(Betrag) { /* ... */ }

// formatierung/datum.js
exportieren Funktion formatDate(Datum) { /* ... */ }

// api/request.js
exportieren Funktion apiRequest(url) { /* ... */ }

// leistung/debounce.js
exportieren Funktion debounce(fn, Verzögerung) { /* ... */ }

Warum das wichtig ist: Jede Utility-Funktion befindet sich in einer eigenen Datei in kategorisierten Verzeichnissen. Suche nach entprellen() bedeutet die Navigation zu leistung/debounce.js direkt. Teams, die an verschiedenen Hilfsprogrammen arbeiten, geraten nicht in Konflikt, weil sie in getrennten Dateien stehen.

Schlussfolgerung

Halten Sie Dateien nach Möglichkeit unter 500 Zeilen. Bei Dateien, die diesen Wert überschreiten, sollten Sie nach eindeutigen Zuständigkeiten suchen, die in separate Module extrahiert werden können. Organisieren Sie zusammengehörige Dateien in Verzeichnissen, um die Struktur beizubehalten, während die einzelnen Dateien konzentriert und wartbar bleiben.

FAQs

Haben Sie Fragen?

Was ist eine akzeptable maximale Dateigröße?

Ziel ist es, weniger als 500 Zeilen pro Datei zu haben. Dateien mit mehr als 500 Zeilen weisen in der Regel auf mehrere Zuständigkeiten hin, die aufgeteilt werden sollten. Die genaue Anzahl ist weniger wichtig als die Frage, ob die Datei einen einzigen, klaren Zweck hat. Eine 600-zeilige Datei, die einen komplexen Algorithmus implementiert, mag in Ordnung sein, aber eine 600-zeilige Dienstprogramm-Grabbelkiste sollte aufgeteilt werden.

Wie kann ich große Dateien aufteilen, ohne den Import zu unterbrechen?

Erstellen Sie ein neues Verzeichnis mit fokussierten Dateien und fügen Sie dann eine Indexdatei hinzu, die alles wieder exportiert: export * from './validation.js'. Aktualisieren Sie Importe nach und nach. Tools wie IDEs können Importpfade automatisch aktualisieren, wenn Code zwischen Dateien verschoben wird.

Was ist mit generiertem Code oder Konfigurationsdateien?

Der generierte Code kann groß sein, da er nicht direkt von Menschen gepflegt wird. Auch Konfigurationsdateien (webpack.config.js usw.) können die normalen Grenzen überschreiten. Die Regel zielt auf von Menschen geschriebenen Code ab, bei dem die Wartbarkeit wichtig ist. Markieren Sie generierte Dateien eindeutig und schließen Sie sie von der Überprüfung der Dateigröße aus.

Wie gehe ich mit Dateien um, die von Natur aus groß werden?

Extrahieren Sie Hilfsfunktionen, verschieben Sie verwandte Klassen in separate Dateien, teilen Sie sie nach Merkmalen oder Verantwortlichkeiten auf. Wenn eine Komponentendatei groß wird, trennen Sie die Komponente von ihrer Logik, ihren Stilen und Tests. Trennen Sie bei der Zustandsverwaltung Reduzierer nach Bereichen. Es gibt immer eine Stelle, an der Code aufgeteilt werden kann.

Starten Sie kostenlos

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

Keine Kreditkarte erforderlich | Scanergebnisse in 32 Sekunden.