6 Tipps & Strategien zur Vermeidung von Circular Dependencies Teil 2/3

Zu Teil 1 der Serie

1. Modularisierung braucht ein Konzept: Erst die Architektur, dann die Entwicklung

Wenn euch nicht sowieso schon bewusst ist, dass eine gut durchdachte Architektur das A und O des Software-Engineerings ist, dann macht euch das spätestens zur Vermeidung von Circular Dependencies klar.

Macht euch noch bevor ihr mit dem Coden eures neuen Software-Projekts beginnt umfangreich Gedanken: Welche Bestandteile wird meine Software haben? Wie kann ich sie sinnvoll modularisieren? Welche Funktionen lagere ich in Services aus? Wie schaffe ich es, dass Funktionsaufrufe zwischen den Bestandteilen immer nur in eine Richtung laufen?

Anschließend solltet ihr eure Gedanken und Ergebnisse in UML-Diagramme verwandeln. Spätestens hier solltet ihr einfach erkennen können, wo Circular Dependencies entstehen könnten. Überlegt euch dann genau, wie ihr die Architektur sinnvoll umbauen könnt.

2. Definiert klare Zuständigkeiten

In eurer Software ist es wie im Entwicklungs-Team: Zuständigkeiten sollten klar verteilt sein. API-Requests sollten nicht in euren Components passieren, dafür gibt es Services. Legt feste Kriterien dafür fest, welcher Bestandteil eurer Software sich um welche Logik kümmert. Circular Dependencies entstehen oft genau dann, wenn eine Komponente eurer Software sich um etwas kümmert, das eigentlich nicht ihr Zuständigkeitsbereich sein sollte. Hinterfragt daher jederzeit, bei der Architektur und in der Entwicklung, ob die entsprechenden Funktionen und Logiken wirklich an dieser Stelle platziert werden sollten.

3. Seid strikt mit eurer Zuständigkeits-Logik

Beachtet auf jeden Fall, dass ihr die Kriterien aus Punkt 2 in der Entwicklung auch wirklich einhaltet. Scheut nicht, ein Refactoring vorzunehmen, wenn ihr merkt, dass doch dagegen verstoßen wurde. Es fühlt sich zwar an, als ob das unnötig Zeit kosten würde, aber glaubt mir: Es lohnt sich und spart euch später umso mehr Zeit.

4. Entwickelt ein Shared-Modul für alles, was ihr an mehreren Stellen braucht

Eine gute Praxis ist immer, ein Shared-Modul anzulegen. Dort rein sollten alle Bestandteile und Funktionen, die ihr in eurem Projekt an mehreren Stellen benötigt, aufruft oder einbindet.

Wichtig ist hier: Das Shared-Module sollte selbst möglichst wenig oder keine Abhängigkeiten zu anderen Modulen aufbauen. Wenn das nicht passiert, kann es wunderbar zur Vermeidung von Circular Dependencies beitragen.

Vermeidet hier auf jeden Fall, dass Services aus dem Shared-Module Funktionen anderer Module aufrufen!

5. Achtet auf lose Kopplung

Ruft ihr die Funktion eines anderen Software-Bestandteils (beispielsweise einer Component oder eines Services) auf, so achtet immer darauf, dass dieser im besten Fall im gleichen Modul liegt oder zumindest logisch nicht zu weit weg.

Die Gefahr für Circular Dependencies wächst immer weiter an, wenn Bestandteile eines Moduls abhängig von zu vielen anderen Modulen werden. Lose Kopplung bedeutet also: Ein Modul kommt im Bestfall mit sich allein klar, viele Abhängigkeiten zwischen verschiedenen Modulen deuten auf eine nicht durchdachte Architektur hin und führen zu großen Problemen – Circular Dependencies und andere.

6. Services sollen aufgerufen werden und möglichst wenig selbst aufrufen

Der Grundgedanke des Services in Angular ist die Auslagerung von Funktionen, die an mehreren Stellen im Projekt, beispielsweise von Components, aufgerufen werden. Achtet deshalb darauf, dass Funktionen in Services nur von anderen Stellen aus aufgerufen werden und möglichst selten andere Bestandteile innerhalb der Software aufrufen.

Das führt nämlich wieder zu mehr Abhängigkeiten und erhöht damit die Gefahr für Circular Dependencies zu sorgen.

Zu Teil 1 der Serie

Schreibe einen Kommentar

Coding Kombüse Logo

Kontakt

Wendenstraße 130
20537 Hamburg, Germany
moin [at] coding-kombuese.de

Vernetze dich mit uns

Bleibe auf dem Laufenden

Wir informieren dich über die digitale Welt und sagen dir welche Trends du im Auge behalten solltest.

Cookie Hinweis von Real Cookie Banner