Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Eine kleine Codeänderung prüfen

Nach dieser Lektion: Ich kann eine kleine Änderung lesen, durch Ausführen herausfinden, was falsch ist, und einen hilfreichen Kommentar schreiben.

Lektion, 60 Min.9 BefehleLab „Linux im Alltag“: die dreißig Befehle, die Entwickelnde auswendig tippen

Wozu ein Code-Review da ist

Bei einem Code-Review liest eine Kollegin Ihre Änderung, bevor sie in den Hauptcode kommt. Sie fängt Fehler, die Sie in der eigenen Arbeit nicht sehen, und verteilt das Wissen über den Code im Team.

Ein nützliches Review ist eine Fähigkeit. Es schaut darauf, was die Änderung tut, nicht nur darauf, wie sie aussieht.

Am Ende dieser Lektion

Notiz

Ich kann eine kleine Änderung lesen, durch Ausführen herausfinden, was falsch ist, und einen hilfreichen Kommentar schreiben.

Schlüsselwörter

BegriffWas er bedeutet
Diffeine Liste der Zeilen, die eine Änderung entfernt und hinzufügt
Code-Revieweine Kollegin liest eine Änderung, bevor sie übernommen wird
Randfalleine ungewöhnliche Eingabe, etwa eine leere Liste, mit der der Code umgehen muss
Review-Kommentareine Notiz zu einer Stelle der Änderung, die sagt, was man nochmals ansehen soll
Überbleibseletwas, das jemand zu entfernen vergaß, etwa eine Debug-Ausgabe

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Eine Änderung zum Prüfen

Ein Kollege will eine kleine Funktion aufräumen. Sie mittelt die Bewertungen, die Kundinnen einem Produkt gaben. Legen Sie zwei Ordner an: vorher enthält den heutigen Code, nachher den Code mit seiner Änderung.

Ihre Aufgabe ist das Review, wie bei einem Pull-Request.

Die beiden Ordner anlegen

Befehl
mkdir -p ~/reviewuebung/vorher ~/reviewuebung/nachher

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

In das Projekt wechseln

Befehl
cd ~/reviewuebung

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 Code von heute schreiben

Befehl
printf 'def durchschnitt_bewertung(bewertungen):\n    if len(bewertungen) == 0:\n        return 0.0\n    gesamt = 0\n    for bewertung in bewertungen:\n        gesamt = gesamt + bewertung\n    return gesamt / len(bewertungen)\n' > vorher/bewertungen.py

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 Version des Kollegen schreiben

Befehl
printf 'def durchschnitt_bewertung(bewertungen):\n    print("bewertungen", bewertungen)\n    return round(sum(bewertungen) / len(bewertungen), 1)\n' > nachher/bewertungen.py

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Zuerst das Diff lesen

Ein Diff zeigt nur, was sich geändert hat. Eine Zeile mit - wurde entfernt. Eine Zeile mit + wurde hinzugefügt. Eine Zeile mit einem Leerzeichen ist Kontext und blieb, wie sie war.

Die @@-Zeile sagt, wo die Änderung liegt. Hier läuft die alte Datei ab Zeile 1 über 7 Zeilen, die neue ab Zeile 1 über 3.

Die Änderung als Diff anzeigen

Befehl
diff -u vorher/bewertungen.py nachher/bewertungen.py | tail -n +3

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Vier Fragen an jede Änderung

Tut sie, was sie sagt? Die Änderung sagt, sie räume die Funktion auf.

Was geschieht an den Rändern: bei einer leeren Liste, bei einem Element, bei einer sehr großen? Gibt es einen Test, der es bemerken würde? Ist etwas übrig geblieben oder unklar, etwa eine Debug-Zeile oder ein vager Name?

Die Änderung ausführen, nicht nur lesen

Lesen zeigt, was falsch aussieht. Ausführen zeigt, was falsch ist. Probieren Sie dieselben Aufrufe an beiden Versionen, auch mit der leeren Liste. PYTHONPATH sagt Python, aus welchem Ordner es importieren soll.

Den alten Code ausprobieren

Befehl
PYTHONPATH=vorher python3 -B -c "from bewertungen import durchschnitt_bewertung; print(durchschnitt_bewertung([4, 5]), durchschnitt_bewertung([]))"

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 neuen Code mit zwei Bewertungen ausprobieren

Befehl
PYTHONPATH=nachher python3 -B -c "from bewertungen import durchschnitt_bewertung; print(durchschnitt_bewertung([4, 5]))"

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 neuen Code mit einer leeren Liste ausprobieren

Befehl
PYTHONPATH=nachher python3 -B -c "from bewertungen import durchschnitt_bewertung; print(durchschnitt_bewertung([]))" 2>&1 | grep Error

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 neuen Code nach Überbleibseln durchsuchen

Befehl
grep -n "print(" nachher/bewertungen.py

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Einen Kommentar schreiben, der hilft

Ein nützlicher Kommentar nennt die Stelle, sagt, was Sie sahen, sagt, warum es zählt, und bietet einen Weg an. Er spricht über den Code, nicht über die Person.

Ein Kommentar, der nur "schlecht" oder "ändern" sagt, gibt der Autorin nichts, womit sie arbeiten kann.

Beispiel: schwache und nützliche Kommentare

Schwacher KommentarNützlicher Kommentar
Das ist falschZeile 1: durchschnitt_bewertung([]) löst jetzt ZeroDivisionError aus. Der alte Code gab 0.0 zurück. Können wir diesen Fall behalten und einen Test ergänzen?
Das rausZeile 2: Dieses print schreibt bei jedem Aufruf in die Logs. Blieb es vom Debuggen übrig?
Warum runden?Zeile 3: Das Runden auf eine Stelle macht aus 4,33 bei jedem Aufrufer 4,3. Ist das gewollt? Dann sagen Sie es im Namen oder im Titel.
Braucht TestsKein Test hat sich geändert. Ein Test für eine leere Liste und einer für eine einzelne Bewertung würden die nächste Änderung schützen.

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein häufiger Fehler

Warnung

Viele prüfen nur Namen und Abstände und stimmen dann zu. Stil zählt am wenigsten. Führen Sie die Änderung aus, probieren Sie den leeren Fall und fragen Sie, ob ein Test es bemerken würde, wenn sie kaputtginge.

Weiterdenken: die eigene Änderung prüfen

Machen Sie eine kleine Änderung an einer eigenen Funktion, etwa eine neue Eigenschaft. Kopieren Sie vorher die alte Datei.

Lassen Sie diff -u über beide laufen und beantworten Sie die vier Fragen wie eine Prüferin. Schreiben Sie einen Kommentar, den Sie gern erhalten würden.

Über dieses Lab und seinen Quellcode: Lab „Linux im Alltag“: die dreißig Befehle, die Entwickelnde auswendig tippen

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.