Source Code: Empfohlene Ordner- und Dateistruktur

4 Minuten zum Lesen
Source Code: Empfohlene Ordner- und Dateistruktur
Eine gut durchdachte Ordnerstruktur im Source Control erleichtert die Orientierung und Zusammenarbeit im Team. Unsere empfohlene minimale Struktur bietet eine solide Basis für die meisten Projekte und kann bei Bedarf erweitert werden.

Eine gut durchdachte Projektstruktur in deinem Versionskontrollsystem ist entscheidend, um neue Mitarbeitende schnell einzuarbeiten und bestehenden Mitarbeitenden eine klare Orientierung zu bieten. Die Strukturierung sollte die verschiedenen Bereiche deines Projekts abbilden, wie z.B. Frontend, Backend, Cloud, On-Premise oder Mobile. Darüber hinaus hilft eine saubere Struktur, nicht nur den Code zu organisieren, sondern auch automatisierte Tests, Konfigurationen, Skripte, Pipelines, Infrastruktur und Dokumentation sauber zu strukturieren.

Projektgröße berücksichtigen

Die Größe deines Projekts spielt eine wichtige Rolle bei der Wahl der Struktur. Bei größeren oder mehreren Projekten in einem Mono-Repository mit unterschiedlichen Anwendungen (z.B. Frontend, Backend, Datenbanken oder andere Services) kann es sinnvoll sein, diese Projekte weiter zu untergliedern. Bei kleineren Projekten reicht oft eine einfachere Struktur auf der obersten Ebene.

Kleine Projekte: Beispielstruktur

David Fowler von Microsoft hat vor längerem eine Vorlage für .NET-Projekte veröffentlicht, die eine klare Trennung auf der obersten Ebene vorsieht:

OrdnerBeschreibung
srcQuellcode der Anwendungen
testsTestprojekte
docsDokumentationen
libsBibliotheken
Diverse Dateien mehr…

Auf der obersten Ebene befinden sich globale Konfigurationen und Abhängigkeitsmanager wie NuGet oder npm, sowie Skripte zum Kompilieren der Lösung und eine README-Datei, die die Projektstruktur erklärt und Anweisungen zum Kompilieren und Debuggen gibt.

Minimale Ordnerstruktur

Die Empfehlung für eine minimale Ordnerstruktur lautet:

OrdnerBeschreibung
eng/Pipelines
docs/Dokumentation
src/Anwendungen und Testprojekte
.editorconfigEditor-Konfigurationen für Styling
.gitignoreGit Ignore-Datei
.gitattributesGit Attribute-Datei
LICENSELizenzdatei
README.mdProjektbeschreibung und zum Entwickeln
Solution.slnSolution für .NET-Projekte

Diese Struktur ist flexibel und kann bei Bedarf erweitert werden, z.B. um Samples, Skripte oder Ähnliches. Wichtig ist, dass die Struktur dokumentiert ist, damit alle Entwickler:innen wissen, wo sie was ablegen und finden können, ohne dass die oberste Ebene unübersichtlich wird. Dies kann direkt in der README.md-Datei erfolgen mit erweiterter Dokumentation im docs-Ordner.

Was die einzelnen Dateien machen und wie die einzelnen Ordner im Detail nochmal strukturiert werden können, erkläre ich in einem separaten Beitrag.

Mehrere Projekte in einem Mono-Repository

In einem Mono-Repository mit mehreren Projekten kann es sinnvoll sein, die Projekte in Unterordnern zu gruppieren und für jedes die minimale Ordnerstruktur anzuwenden. So behältst du den Überblick und kannst die Projekte getrennt voneinander entwickeln und verwalten, während sie im selben Repository liegen und auch globale Konfigurationen teilen.

Die Empfehlung für eine erweiterte Ordnerstruktur für mehrere Projekte lautet:

OrdnerBeschreibung
eng/Pipelines Templates oder Governance Pipelines
docs/Allgemeine Dokumentation
projects/Anwendungen und Testprojekte
.editorconfigGlobale Editor-Konfigurationen für Styling
.gitignoreGlobale Git Ignore-Datei
.gitattributesGlobale Git Attribute-Datei
LICENSEGlobale Lizenzdatei
README.mdGlobale Beschreibung des Repositories

Innerhalb des projects-Ordners besitzt jedes Teilprojekt einen eigenen Ordner. In diesen Unterordnern gilt dann wieder die minimale Ordnerstruktur.

Abweichungen und Anpassungen

Je nach Projekt können Abweichungen in der Benennung und Struktur sinnvoll sein. Beispielsweise können Pipelines in einem Ordner wie build oder eng (Engineering) liegen, oder bei GitHub Actions im Ordner .github. Testprojekte können separat in einem eigenen tests-Ordner liegen, um die App-Struktur nicht zu überladen und spezielle Eigenschaften für alle Testprojekte zentral zu konfigurieren.

Die Empfehlung ist sehr minimal und je nach Art der Anwendungen kann es auch beliebig erweitert werden, wie z.B. eine Directory.Build.props im Root-Verzeichnis für .NET-Projekte, eine package.json im Root-Verzeichnis für Frontend-Projekte oder ähnliches.

Ein Beispiel kannst du dem Open Space Planner entnehmen. Dieses ist auf eine komplexere Projektstruktur ausgelegt.

Wie strukturierst du deinen Code und deine Projekte im Source Control? Schau gerne bei uns auf LinkedIn vorbei und diskutiere mit.

Florian Bader

Florian Bader

Florian ist Solution Architect und Microsoft Most Valuable Professional für Azure IoT mit langjähriger Erfahrung im Bereich DevOps, Cloud und Digitalisierung. Er unterstützt Unternehmen dabei, effiziente und effektive Lösungen zu entwickeln, die ihre digitalen Projekte nachhaltig zum Erfolg führen.

Verwandte Beiträge

Entdecken Sie weitere Artikel, die ähnliche Themen behandeln und vertiefen Sie Ihr Wissen. Diese Beiträge wurden basierend auf gemeinsamen Tags und Veröffentlichungsdaten ausgewählt. Viel Spaß beim Weiterlesen!