Fremden Code lesen Sie, bevor Sie ihn nutzen
Ein Code-Review heißt, Code zu lesen und zu hinterfragen, den eine andere Person oder ein Assistent geschrieben hat, bevor er in Ihr Projekt kommt. So fangen Sie Fehler ab, die ein Lauf allein nicht zeigt.
Ein Assistent liefert in Sekunden dreißig Zeilen. Das Lesen dauert Minuten. Wer diese Minuten spart, übernimmt Fehler, die er nie gesehen hat.
Am Ende dieser Lektion
Notiz
Ich kann fremden Code mit einer Prüfliste lesen und seine Fehler benennen.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Code-Review | das gezielte Lesen von fremdem Code vor der Übernahme | |
| Prüfliste | eine feste Liste von Fragen, die Sie jedem Code stellen | |
| Randfall | eine ungewöhnliche Eingabe, bei der Code leicht scheitert | eine leere Liste |
| Annahme | etwas, das der Code stillschweigend als wahr voraussetzt | |
| Fund | ein Fehler oder eine Schwäche, die Sie im Review entdecken |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Lesen Sie zuerst, was jede Zeile tut
Beginnen Sie nicht mit dem Ausführen, sondern mit dem Lesen. Sagen Sie sich zu jeder Zeile, was sie tut. Stocken Sie, ist das schon ein Fund.
Suchen Sie dann die Annahmen: Der Code setzt etwa voraus, dass eine Liste nicht leer ist. Jede Annahme, die nicht geprüft wird, kann brechen.
Die Prüfliste für fremden Code
| Frage | Wozu sie gut ist | Beispiel für einen Fund |
|---|---|---|
| Tut jede Zeile, was ich erwarte? | Zeigt falsche Rechnungen | Ganzzahldivision statt Division |
| Was passiert bei leerer Eingabe? | Zeigt Randfälle | Teilen durch null |
| Was passiert bei falscher Eingabe? | Zeigt fehlende Prüfungen | Ein Text statt einer Zahl |
| Gibt es Namen, die es nicht gibt? | Zeigt erfundene Funktionen | Eine Funktion, die keine Bibliothek hat |
| Passt es zu meinem Projekt? | Zeigt fremde Stile und Einheiten | Euro statt Cent |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Vorschlag, den Sie prüfen sollen
# Ein Vorschlag, wie ihn ein Assistent machen könnte. Prüfen Sie ihn wie fremden Code.
def durchschnitt(zahlen):
summe = 0
for zahl in zahlen:
summe = summe + zahl
return summe // len(zahlen)
print(durchschnitt([2, 3, 4]))
print(durchschnitt([1, 2]))
# Aufgabe: Was erwarten Sie für [1, 2]? Ändern Sie die Rechnung und starten Sie noch einmal.
Was der Lauf zeigt und was er verschweigt
Der Lauf gibt 3 und dann 1 aus. Die erste Zahl stimmt. Die zweite ist falsch, denn der Durchschnitt von 1 und 2 ist 1,5. Ursache ist die Division //, die abrundet.
Außerdem bricht die Funktion bei einer leeren Liste ab, weil len dann 0 ist. Beide Funde kommen aus der Prüfliste, nicht aus dem Lauf allein.
Ein häufiger Fehler
Warnung
Viele glauben, Code sei richtig, wenn er ohne Fehlermeldung läuft. Ein Programm kann laufen und trotzdem falsch rechnen. Prüfen Sie das Ergebnis gegen einen Wert, den Sie selbst ausgerechnet haben.
Im Lab zählen Sie, was ein Review braucht
Ein Review beginnt mit einem Überblick. Im Lab-Projekt suchen Sie die Stellen, an denen Funktionen ihr Ergebnis zurückgeben, und zählen die vorhandenen Prüfungen.
Sie ändern nichts und suchen keinen Fehler. Das Ziel ist ein Plan, welche Zeilen Sie später genauer lesen.
Die Rückgabezeilen auflisten
docker exec -w /home/node/project agent grep -n "return" shop.jsHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die vorhandenen Prüfungen zählen
docker exec -w /home/node/project agent grep -c "assert.strictEqual" shop.test.jsHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Was der Überblick Ihnen sagt
Der erste Befehl nennt drei Zeilen mit return: die Zeilen 9, 13 und 17. Jede gehört zu einer der drei Funktionen. Dort beginnt Ihr Review.
Der zweite Befehl zählt 5 Prüfungen. Fragen Sie sich, ob diese fünf alle Funktionen und ihre Randfälle abdecken.
Diese Muster verdienen immer einen zweiten Blick
| Muster | Warum es verdächtig ist |
|---|---|
| eval( oder exec( | Es führt Text als Code aus |
| except: ohne Fehlerart | Es verschluckt jeden Fehler |
| TODO im Code | Es zeigt unfertige Stellen |
| Zahlen ohne Erklärung | Niemand weiß, woher sie kommen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.