Sie haben mit einem KI-Coding-Werkzeug ein Feature gebaut. Die Liste erscheint, Filter funktionieren und ein weiterer Prompt kann das Ergebnis ändern. Dann fragt jemand, warum ein Eintrag verschwunden ist oder ob eine kleine Regeländerung andere Filter beeinflusst. Sie müssen die KI erneut fragen.

Probieren Sie es mit einem kleinen JavaScript-Filter. Notieren Sie, welche Einträge übrig bleiben, ändern Sie die Bestandsschwelle von Hand und vergleichen Sie das Ergebnis mit Ihrer Vorhersage.

Ein vorhersagbares Verhalten wählen

„Bring mir diese ganze App bei“ ist eine große Aufgabe. Wählen Sie stattdessen ein benennbares Ergebnis: Welche Einträge bleiben übrig, wenn Kategorie, Suchtext und Verfügbarkeitsschalter kombiniert werden?

Stellen Sie vor der Änderung drei Fragen:

  1. Welche Eintrags-IDs sollte diese Eingabe liefern?
  2. Welche Bedingung schließt jeden Eintrag ein oder aus?
  3. Welche Ergebnisse sollten bei einer Änderung der Verfügbarkeitsregel gleich bleiben?

Wenn Sie die Syntax noch nicht lesen können, gehen Sie Ausdruck für Ausdruck vor. Hier behält filter Einträge, deren Callback true liefert, && verlangt alle Bedingungen und || lässt eine der beiden Seiten genügen. Ein- und Ausgabe sind klein genug für eine Berechnung auf Papier.

Laden Sie die Filter-Lernübung herunter. Code und vier Datensätze wurden für diese Lektion erstellt, nicht aus einer KI-Antwort oder echten Anwendung übernommen. Entpacken Sie das Archiv und öffnen Sie filter-learning-lab. Sie benötigen Node.js 22 oder neuer, einen Texteditor und ein Terminal. Es gibt keine zu installierenden Abhängigkeiten, Modellaufrufe oder Netzwerkanfragen.

Drei Vorhersagen vor der Ausführung aufschreiben

Lesen Sie catalog.mjs und filter.mjs. Der Katalog enthält folgende Einträge:

ID Bezeichnung Kategorie Bestand
folded-stars Folded stars paper 1
paper-kites Paper kites paper 3
clay-moons Clay moons clay 0
clay-bells Clay bells clay 2

Die ursprüngliche Verfügbarkeitsregel nimmt einen Eintrag ab einer Einheit auf. Die Suche nutzt die Bezeichnung, ignoriert Groß-/Kleinschreibung und entfernt Rand-Leerzeichen der Anfrage. Kategorie, Suche und Verfügbarkeit müssen alle passen. Die Kategorie all akzeptiert jede Kategorie; eine leere Suche passt zu jeder Bezeichnung.

Öffnen Sie blank-note.md und notieren Sie die erwarteten IDs für diese Eingaben. Lesen Sie bei Bedarf die Funktion, aber starten Sie noch nicht den Beobachter und fragen Sie noch nicht nach der Antwort.

Fall Kategorie Suche availableOnly Zu erklären
A paper leer true Warum ein Bestand von 1 noch genügt
B all CLAY false Warum ein Eintrag ohne Bestand erscheinen kann
C clay bells true Wie alle drei Bedingungen zusammenwirken

Führen Sie dann im entpackten Ordner diese Befehle aus:

node observe.mjs
node --test baseline.test.mjs
Ihre Vorhersagen mit den ursprünglichen Ergebnissen vergleichen
Fall Ursprüngliche IDs Grund
A folded-stars, paper-kites Beide gehören zu paper und haben mindestens eine Einheit.
B clay-moons, clay-bells Die getrimmte Suche ohne Beachtung der Schreibweise passt auf beide. Der Verfügbarkeitsfilter ist aus.
C clay-bells Kategorie und Bezeichnung passen, der Bestand ist 2.

Weicht Ihre Vorhersage ab, markieren Sie die erste missverstandene Bedingung. Für Fall B wäre „Der Eintrag ist vorrätig“ falsch: clay-moons hat keinen Bestand. Er bleibt, weil availableOnly false ist und diese Bedingung ihn daher nicht ausschließt.

Die Regel ohne übernommene Antwort erklären

Schließen Sie die ausgefüllte Notiz, falls geöffnet. Erklären Sie Fall B in zwei oder drei Sätzen für jemanden, der den Katalog ansieht. Nennen Sie die tatsächliche Eingabe und die Bedingung, die null Bestand erlaubt.

Unterscheiden Sie die wenigen Dateien und ihre Aufgaben:

Datei Aufgabe in dieser Übung
catalog.mjs Liefert die vier Datensätze.
filter.mjs Entscheidet, welche Datensätze den Bedingungen entsprechen.
observe.mjs Liefert drei Bedingungssätze und gibt gewählte IDs und Bestand aus.
baseline.test.mjs Prüft das ursprüngliche Filterverhalten.

Der Beobachter ist ein Terminal-Aufrufer, kein Browser-Screenshot. In Ihrer App liefert vielleicht ein Button oder Formular ähnliche Werte. Lesen Sie diesen Aufrufer, bevor Sie die Eingaben der Oberfläche annehmen.

Mit Yenpos lokalem Codeleser können Sie Daten, Filter und Aufrufer beim Lesen geöffnet halten. Datei- und Textsuche brauchen keine Modellverbindung. Nutzen Sie den AI Reader mit eigenem Anbieter, fragen Sie nach der konkreten unklaren Bedingung und kehren Sie dann zum umgebenden Quellcode zurück, um eine eigene Erklärung zu schreiben. Führen Sie Befehle selbst im Terminal aus; die Übung benötigt keine Modellantwort.

Eine Regel von Hand ändern

Ändern Sie nun die Anforderung: Bei aktivem Verfügbarkeitsfilter sollen nur Materialien mit genug Bestand für zwei Personen erscheinen, je eine Einheit. Lassen Sie Kategoriefilter, Suchnormalisierung und den ausgeschalteten Zustand unverändert.

Die ursprüngliche Regel „mindestens eins“ war für die ursprüngliche Anforderung richtig. Dies ist eine kleine Feature-Änderung, keine versteckte Fehlerkorrektur.

Schreiben Sie vor der Bearbeitung eine neue Vorhersage. Fall A sollte folded-stars verlieren. B sollte den Eintrag ohne Bestand weiterhin enthalten, da der Schalter aus ist. C sollte clay-bells mit genau 2 Einheiten behalten.

Führen Sie die Prüfungen der neuen Anforderung einmal gegen den Originalcode aus:

node --test exercise/pair-policy.check.mjs

Dieser Befehl soll vor der Änderung fehlschlagen: Die heruntergeladene Funktion akzeptiert noch Bestand 1. Lesen Sie die fehlgeschlagene Assertion, um das fehlende Verhalten zu erkennen. Ein Syntaxfehler oder eine fehlende Datei wäre eine andere Fehlerart.

Ändern Sie in filter.mjs nur die Bestandsschwelle von >= 1 auf >= 2. Behalten Sie die umgebende Bedingung availableOnly bei. Führen Sie dann aus:

node observe.mjs
node --test exercise/pair-policy.check.mjs
Fall IDs nach der Änderung Geprüfte Eigenschaft
A paper-kites Eine Einheit erfüllt die gewählte Zwei-Personen-Regel nicht mehr.
B clay-moons, clay-bells Bei ausgeschalteter Verfügbarkeit wird die Bestandsregel weiter umgangen; Suche trimmt weiter und ignoriert Schreibweise.
C clay-bells Genau zwei Einheiten genügen; > 2 wäre falsch.

Die ursprüngliche Testsuite beschreibt die Ein-Einheiten-Regel. Ihre betroffenen Assertions werden nach dieser beabsichtigten Änderung scheitern. Nutzen Sie die separat benannten Zwei-Personen-Prüfungen für das neue Verhalten; löschen Sie keine Assertion nur zum Verbergen eines Fehlers. Das Archiv behält den Originalcode, damit Sie die Übung wiederholen können.

Die Änderung erneut erklären, einschließlich des Unveränderten

Legen Sie das fertige Beispiel beiseite und vervollständigen Sie Ihre Notiz in eigenen Worten. Sie sollte Folgendes benennen:

  • Ursprüngliche und neue Bestandsschwelle sowie die genaue Änderungsstelle.
  • Warum A einen Eintrag verliert, während B unverändert bleibt.
  • Warum genau 2 Einheiten in C weiterhin genügen müssen.
  • Ausgeführte Befehle und ihre Ausgaben.
  • Was ungeprüft bleibt, etwa Formulareingaben, Serververhalten oder Speicherung einer echten App.

Eine hilfreiche Schlussbeschreibung ist konkret: „Bei aktiver Verfügbarkeit müssen alle Filter passen und der Bestand muss jetzt mindestens zwei sein. Ist sie aus, beeinflusst der Bestand die Auswahl nicht. Die neue Schwelle entfernt folded-stars aus A, während B und C dieselben IDs behalten.“ Schließen Sie die Seite und erklären Sie dies anhand des Codes, statt den Wortlaut auswendig zu lernen.

Probieren Sie nun eine andere Eingabe. Sagen Sie das Ergebnis vor dem Ausführen voraus und erklären Sie, welche Bedingungen die einzelnen Einträge behalten oder ausgeschlossen haben.

Den Zyklus auf ein Feature Ihres Projekts übertragen

Wählen Sie ein kleines Verhalten mit sichtbaren Eingaben und reproduzierbarer Ausgabe. Notieren Sie die Quellcodeversion, erstellen Sie eine Kopie oder nutzen Sie Ihre normale Versionskontrolle und halten Sie die erste Änderung klein. Schreiben Sie die Vorhersage vor dem Ausführen auf. Bei Abweichungen lesen Sie Bedingung und Aufrufer, bevor Sie einen weiteren generierten Patch anfordern.

Wenn Sie das Verhalten noch nicht finden, beginnen Sie mit einem Einstieg in unbekannten Code. Möchten Sie eine KI-Erklärung prüfen, nutzen Sie die Übung zur Prüfung von Erklärungen. Für ein Patch-Review arbeitet die Promise-Cache-Anleitung eine konkrete Änderung und ihren Fehlerfall durch.