Kopplung und Kohäsion messen die Güte eines Entwurfs
Kopplung sagt, wie stark Teile eines Systems voneinander abhängen. Kohäsion sagt, wie gut die Teile eines einzelnen Bausteins zusammengehören.
Ein guter Entwurf hat lose Kopplung und hohe Kohäsion. Dann lässt sich ein Teil ändern, ohne dass alle anderen brechen.
Am Ende dieser Lektion
Notiz
Ich kann einen Entwurf nach Kopplung und Kohäsion beurteilen.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Baustein | ein Teil eines Systems mit einer Aufgabe | Ausleihe |
| Kopplung | wie stark ein Baustein von anderen abhängt | |
| Kohäsion | wie eng die Teile eines Bausteins zusammengehören | |
| Abhängigkeit | ein Baustein nutzt einen anderen | |
| Schnittstelle | das, was ein Baustein nach außen anbietet |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Lose Kopplung hält Änderungen klein
Wenn Baustein A viele Details von Baustein B kennt, ist A eng an B gekoppelt. Ändert sich B, muss A mitgeändert werden.
Lose Kopplung heißt: A kennt nur die Schnittstelle von B. Wie B innen arbeitet, ist A egal.
Im Lab bricht eine Umbenennung den Aufruf
Die Web-API kennt die Spaltennamen der Tabelle. Wer eine Spalte umbenennt, bricht jeden Aufruf, der den alten Namen nutzt.
Sie legen die Tabelle leihgaben an, fragen die Spalte geraet ab, benennen sie um und fragen noch einmal.
psql das Passwort geben
export PGPASSWORD=shopHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Von vorn beginnen
psql -h db -U shop -c "drop table if exists leihgaben"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Tabelle leihgaben anlegen
psql -h db -U shop -c "create table leihgaben (id serial primary key, geraet text not null, person text not null)"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Der API sagen, dass sie neu schaut
psql -h db -U shop -c "notify pgrst, 'reload schema'"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Spalte geraet abfragen
curl -s -o /dev/null -w "%{http_code}\n" "http://api:3000/leihgaben?select=geraet"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Spalte umbenennen
psql -h db -U shop -c "alter table leihgaben rename column geraet to geraet_name"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Der API wieder sagen, dass sie neu schaut
psql -h db -U shop -c "notify pgrst, 'reload schema'"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Den alten Namen noch einmal abfragen
curl -s -o /dev/null -w "%{http_code}\n" "http://api:3000/leihgaben?select=geraet"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein Beispiel: was die Umbenennung zeigt
| Schritt | Code | Deutung |
|---|---|---|
| Abfrage vor der Umbenennung | 200 | Die Spalte geraet gibt es |
| Abfrage nach der Umbenennung | 400 | Der alte Name bricht, die Kopplung ist eng |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Hohe Kohäsion heißt: ein Baustein, eine Aufgabe
Ein Baustein hat hohe Kohäsion, wenn alles in ihm zu einer Aufgabe gehört. Ein Baustein Ausleihe, der auch Rechnungen druckt und Mails sendet, hat niedrige Kohäsion.
Solche Bausteine ändern sich aus vielen Gründen. Teilen Sie sie, bis jeder einen Grund zur Änderung hat.
Ein Beispiel: drei Entwürfe im Vergleich
| Entwurf | Kopplung | Kohäsion |
|---|---|---|
| Ein großer Baustein für alles | Gering, aber alles hängt darin zusammen | Niedrig |
| Bausteine, die alle Details voneinander kennen | Eng | Hoch |
| Kleine Bausteine mit klaren Schnittstellen | Lose | Hoch |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein häufiger Fehler
Warnung
Viele glauben, keine Abhängigkeit sei das Ziel. Ohne Abhängigkeit tut ein System nichts. Das Ziel sind wenige, klare Abhängigkeiten, die über eine Schnittstelle laufen und nicht über Details.