Blog

Dekodierung der Komplexität: Wie kann man die Komplexität der Codebasis beurteilen?

Rik Adegeest

Aktualisiert Oktober 15, 2025
6 Minuten

Wenn Sie zum ersten Mal auf eine neue Codebasis stoßen, kann es eine entmutigende Aufgabe sein, herauszufinden, wo Sie anfangen sollen. Wonach sollten Sie suchen, um sie zu verstehen? Um Ihnen dabei zu helfen, haben wir eine nicht erschöpfende Liste von Fragen zusammengestellt, die Sie sich stellen können, wenn Sie anfangen. Innerhalb jedes Bereichs sind die Fragen nach dem Grad der Ausgereiftheit geordnet. Das Niveau, auf dem ein Bereich entwickelt werden sollte, hängt von der Reife des Projekts oder der Organisation ab.

Dokumentation

Dokumentation ist für jede Codebasis unerlässlich. Sie hilft den Entwicklern, den Code und seinen Zweck zu verstehen.
  • Ist das Ziel des Repositorys klar definiert und werden sein Zweck und seine Ziele beschrieben?
  • Gibt es Kommentare innerhalb des Codes, einschließlich Docstrings, falls für die Sprache zutreffend, um zusätzlichen Kontext und Erklärungen zu liefern?
  • Gibt es eine README-Datei, die einen Überblick über das Projekt und seine Einrichtungsanweisungen enthält?
  • Gibt es in der README einen Abschnitt zur Selbsteinweisung für neue Entwickler? Er sollte ihnen helfen, schnell loszulegen.
  • Enthält die Dokumentation eine Beschreibung des Bereitstellungsprozesses?
  • Gibt es einen Styleguide und/oder ein Dokument mit Benennungskonventionen, um die Konsistenz der Codebasis zu gewährleisten?
  • Wird die Dokumentation zusammen mit dem Code im Repository gespeichert?

CI/CD

Kontinuierliche Integration und kontinuierliches Deployment (CI/CD) sorgen für einen reibungslosen, effizienten und stabilen Entwicklungsprozess.
  • Verfügt die Codebasis über eine CI-Pipeline, die den Build-, Test- und Bereitstellungsprozess automatisiert?
  • Wird Pre-Commit verwendet, um Codequalität und Namensstandards durchzusetzen, bevor Änderungen am Code übertragen werden?
  • Gibt es Linting, um eine konsistente Formatierung des Codes zu gewährleisten und mögliche Fehler oder Bugs zu erkennen?
  • Ist die Bereitstellung in der Produktion automatisiert, so dass schnelle und zuverlässige Releases möglich sind?
  • Wie wird der Freigabeprozess verwaltet? Sind die Releases mit Tags versehen und gut dokumentiert, um Änderungen nachzuvollziehen und Rollbacks bei Bedarf zu erleichtern?
  • Gibt es dbt-Prüfpunkte, um Namenskonventionen und Konsistenz bei Datentransformationen durchzusetzen?

Sicherheit und Geheimnisse

Sicherheit ist ein kritischer Aspekt jeder Codebasis, und es ist wichtig, die Praktiken der Codebasis hinsichtlich der Verwaltung von Geheimnissen und der Zugriffskontrolle zu bewerten.
  • Gibt es im Code-Repository irgendwelche fest kodierten Geheimnisse, wie Passwörter oder API-Schlüssel?
  • Ist das Code-Repository mit einem sicheren Geheimhaltungsmanager wie AWS Secrets Manager oder HashiCorp Vault verbunden, um sensible Informationen zu speichern und zu verwalten?

Bezüglich der Zugangsverwaltung:

  • Wird das Projekt über Terraform verwaltet, das Infrastructure-as-Code bietet und eine sichere Bereitstellung und Verwaltung von Ressourcen ermöglicht?
  • Wird das Prinzip der geringsten Berechtigung befolgt, so dass jeder Benutzer oder Dienst nur die für seine Aufgaben erforderlichen Berechtigungen hat?
  • Sind Sicherheitsgruppen implementiert?

Hauptbeitragende

Das Verständnis der Hauptbeteiligten einer Codebasis ist entscheidend für eine effektive Kommunikation, Entscheidungsfindung und das Erkennen potenzieller Risiken. Indem Sie die Eigentumsverhältnisse und die Aktivitäten innerhalb der Codebasis bewerten, können Sie die wichtigsten Personen ermitteln, die für die Verwaltung und Pflege der Codebasis verantwortlich sind.
  • Git-Ruhm: Wer hat den meisten Code zum Repository beigetragen? Das CLI-Tool Git Fame hilft bei der Identifizierung von Personen mit bedeutendem Wissen und Eigentum an der Codebasis.
  • Gibt es in letzter Zeit Aktivitäten im Repository und wie häufig werden Übertragungen vorgenommen? Die Häufigkeit der Übertragungen hilft dabei, den Umfang der laufenden Entwicklungs- und Wartungsarbeiten zu beurteilen.
  • Bitten Sie einen Mitarbeiter des Kunden, die Codebasis zu besichtigen. Auf diese Weise können Sie die Sichtweise des Kunden auf den beabsichtigten Zweck der Codebasis, die potenziellen Herausforderungen und alle spezifischen Überlegungen kennenlernen.

Qualität und Struktur des Codes

Die Bewertung der Qualität und Struktur des Codes ist für die Pflege einer effizienten Codebasis unerlässlich. Indem Sie verschiedene Aspekte wie die Klarheit der Ziele, die Ordnerstruktur, die Funktionalität des Codes, die Paketverwaltung, den Codegeruch und das Testen berücksichtigen, können Sie Einblicke in den allgemeinen Zustand und die Wartbarkeit der Codebasis gewinnen.
  • Gibt der Titel des Repositoriums seinen Zweck richtig wieder?
  • Ist die Ordnerstruktur des Projekts sinnvoll und ermöglicht sie eine einfache Navigation und Organisation der Codedateien?
  • Kann der Code erfolgreich ausgeführt werden und die erwarteten Ergebnisse liefern?
  • Gibt es eine gut strukturierte Datei main.py (für Python-Projekte), die als Einstiegspunkt dient und einen klaren Überblick über die Struktur des Codes bietet?
  • Sind die verwendeten Pakete auf dem neuesten Stand, und wie werden die Abhängigkeiten verwaltet, um Kompatibilität und Sicherheit zu gewährleisten?
  • Weist der Code Codegeruch auf, z. B. doppelten Code, lange Methoden oder übermäßige Komplexität?
  • Werden Notebooks in der Produktion eingesetzt? Dies ist eine Praxis, die Sie am besten vermeiden sollten.
  • Werden in einem Notizbuch mehrere Sprachen verwendet, was zu Verwirrung und Problemen bei der Wartung führen kann?
  • Gibt es Tests, um die Korrektheit des Codes zu überprüfen, und wie viel Prozent der Codebasis wird durch Tests abgedeckt?
  • Ist der Code ordnungsgemäß verpackt, so dass er leicht verteilt und bereitgestellt werden kann?

Verzweigung

Effektive Verzweigungs- und Versionskontrollverfahren sind für die Zusammenarbeit, die Stabilität des Codes und die Aufrechterhaltung einer gut strukturierten Codebasis unerlässlich. Ist die Codebasis ordnungsgemäß versionskontrolliert, so dass Änderungen leicht nachverfolgt werden können und die Zusammenarbeit zwischen den Entwicklern möglich ist?
  • Gibt es Richtlinien oder Regeln für die Verzweigung, z. B. Commit-Berechtigungen, erforderliche Genehmigungen oder bestimmte Genehmiger?
  • Können Entwickler direkt in den Haupt-/Standardzweig übertragen, oder ist für Änderungen ein separater Zweig erforderlich?
  • Ist die Zustimmung einer anderen Person erforderlich, bevor ein Zweig zusammengeführt wird, und gibt es bestimmte Zustimmungsberechtigte?
  • Konzentrieren sich Pull Requests (PRs) auf einen einzigen Zweck oder sind sie groß und umfassend, was zu Schwierigkeiten bei der Überprüfung und Zusammenführung führen kann?
  • Wurden PRs genehmigt, bevor die CI-Prüfungen (wie Code-Reviews und automatisierte Tests), die die Codequalität sicherstellen sollen, erfolgreich waren?
  • Ist es möglich, Zweige zusammenzuführen, bevor alle CI-Prüfungen erfolgreich waren, was die Stabilität und Qualität der Codebasis gefährden könnte?

Trennung der Umgebungen

Eine ordnungsgemäße Trennung der Umgebungen und ein effektives Abhängigkeitsmanagement sind entscheidend für einen stabilen und effizienten Entwicklungsprozess. Indem Sie die Umgebungseinrichtung der Codebasis und die Abhängigkeitsverfahren bewerten, können Sie sicherstellen, dass die Entwickler über die erforderlichen Tools und Ressourcen verfügen und gleichzeitig das Risiko von Problemen in der Produktion minimieren.
  • Sind verschiedene Umgebungen definiert, z. B. Entwicklung, Staging und Produktion? Stimmen diese Umgebungen mit den Anforderungen des Projekts überein und sind sie hinsichtlich ihres Zwecks sinnvoll?
  • Ist die unterstützte Umgebung klar definiert, einschließlich des Betriebssystems, der Python-Versionen und anderer relevanter Abhängigkeiten? Gibt es Unterstützung für Entwicklungscontainer, um konsistente und reproduzierbare Umgebungen zu gewährleisten?
  • Können Entwickler den Code direkt in der Produktionsumgebung ausführen, oder gibt es geeignete Bereitstellungspipelines und -prozesse, um kontrollierte Veröffentlichungen zu gewährleisten?
  • Sind die Abhängigkeiten für Entwicklungszwecke von denen für die Produktion getrennt, so dass eine effiziente Verwaltung möglich ist und sichergestellt wird, dass nur die notwendigen Abhängigkeiten in die Produktionsumgebung aufgenommen werden?

DBT-Projekte

Je nach der im Repo verwendeten Technologie kann nach bestimmten Elementen gesucht werden. Hier sind einige, wenn Sie an einem dbt-Projekt arbeiten.
  • Wird slim-CI (dbt) genutzt, um die CI-Pipeline für Datenumwandlungsprozesse zu optimieren?
  • Sind die Daten in der CI-Pipeline begrenzt, um unnötige Verarbeitung zu vermeiden und die Ausführungszeit zu reduzieren (dbt)?

Verfasst von

Rik Adegeest

Rik is a dedicated Data Engineer with a passion for applying data to solve complex problems and create scalable, reliable, and high-performing solutions. With a strong foundation in programming and a commitment to continuous improvement, Rik thrives on challenging projects that offer opportunities for optimization and innovation.

Contact

Let’s discuss how we can support your journey.