Wie du ChatGPT fürs Programmieren promptest
Nutze ChatGPT für Programmieraufgaben mit fokussiertem Kontext, Einschränkungen und Akzeptanzkriterien, die Code hervorbringen, den du prüfen und validieren kannst.
Prompte ChatGPT für Programmieraufgaben, indem du die technische Entscheidung beschreibst, nicht nur den Code, den du zurückhaben möchtest. Gib ihm den relevanten Code- oder Repository-Kontext, das zu bewahrende Verhalten, ein konkretes Ergebnis und eine Möglichkeit, das Resultat zu überprüfen.
„Schreibe eine Funktion, die X macht“ kann für ein kleines Hilfsprogramm ausreichen. Es reicht nicht aus, wenn eine Änderung das Nutzerverhalten, einen gemeinsamen Vertrag oder ein Produktionssystem betrifft.
Beginne mit einer Aufgabenbeschreibung
Bevor du nach Code fragst, nenne vier Dinge:
- Was jetzt existiert: die relevante Komponente, Funktion, API oder der Fehler.
- Was sich ändern soll: ein für Nutzer oder das System sichtbares Ergebnis.
- Was sich nicht ändern darf: Kompatibilität, Leistung, Barrierefreiheit, Verträge oder öffentliche APIs.
- So prüfst du es: Tests, Reproduktionsschritte, Typprüfungen oder manuelle Akzeptanzkriterien.
Wenn du einen langlebigen ChatGPT-Arbeitsbereich nutzt, halte die Architekturhinweise, Anforderungen und relevanten Dateien zusammen. ChatGPT Projects kann Unterhaltungen, Referenzdateien und projektspezifische Anweisungen organisieren; prüfe deinen aktuellen Plan und die Steuerelemente des Arbeitsbereichs, bevor du Quellmaterial hochlädst.
Prompte ChatGPT mit Grenzen, damit es Code generiert
Vermeide Folgendes:
Erstelle eine Datei-Upload-Komponente.
Das definiert weder Zuständigkeiten noch Fehlerbehandlung, Dateilimits, Barrierefreiheit oder den umgebenden UI-Vertrag.
Verwende stattdessen eine begrenzte Anfrage:
Wir haben eine React-Einstellungsseite, die bereits das Absenden des Formulars und
Fehlermeldungen verwaltet. Füge dem bestehenden Formular einen Datei-Uploader hinzu.
Ergebnis: Ein Nutzer kann eine PNG- oder JPEG-Datei unter 5 MB auswählen, den
ausgewählten Dateinamen sehen, sie vor dem Absenden entfernen und bei ungültigen
Dateien die bestehende lokalisierte Fehlermeldung erhalten.
Einschränkungen: Füge keine neue State-Bibliothek hinzu, erstelle keinen Upload-Endpunkt
und behalte den aktuellen Submit-Handler als alleinigen Besitzer des Formularzustands bei.
Gib die kleinste Menge geänderter Dateien zurück, erkläre jede Änderung und füge
Tests für ungültigen Typ, Größenlimit, Entfernen und erfolgreiche Auswahl hinzu.
Die Anfrage macht die Komponente kleiner, weil sie unnötige Architektur ausschließt.
Bitte ChatGPT zuerst um Debugging, bevor es etwas repariert
Bitte beim Debugging um eine Hypothese und einen Reproduktionspfad, bevor du nach einem Patch fragst:
Symptom: Die Speichern-Schaltfläche bleibt deaktiviert, nachdem ein API-Wiederholungsversuch erfolgreich war.
Erwartetes Verhalten: Die Schaltfläche wird nach dem erfolgreichen Wiederholungsversuch verfügbar.
Beobachtetes Verhalten: Die Antwortdaten werden angezeigt, aber die Schaltfläche bleibt deaktiviert.
Relevanter Kontext: Die Schaltfläche hängt von isPending und form.isDirty ab. Das begann,
nachdem Wiederholungen zum Mutation-Hook hinzugefügt wurden.
Liste zuerst die wahrscheinlichsten Zustandsübergänge und die Belege auf, die zum
Bestätigen jedes einzelnen nötig sind. Schlage dann den kleinsten Fix und den
Regressionstest vor.
Das ist sicherer als „Repariere die deaktivierte Schaltfläche“, weil es ChatGPT auffordert, einen veralteten Zustandsfehler von einem Validierungs- oder UI-Rendering-Problem zu unterscheiden.
Prompte ChatGPT für ein Refactoring ohne Verhaltensänderung
Refactoring-Anfragen benötigen eine stärkere Erhaltungsklausel:
Refaktoriere die Liste der Preiskarten, um doppelte Logik zum Rendern von Tarifen zu entfernen.
Bewahre bei: öffentliche Props, Namen der Analytics-Ereignisse, Checkout-Ziele,
Tastaturverhalten, Ladezustände und das bestehende mobile Layout.
Umfang: Begrenze Änderungen auf das Preisfeature und die direkt zugehörigen Tests.
Führe keine Design-System-Abstraktion ein, sofern das vorhandene Primitive das
gemeinsame Verhalten nicht ausdrücken kann.
Akzeptanzkriterien: Snapshot- oder Interaktionstests decken jeden Tarifzustand ab,
und die gerenderten Links und Ereignis-Payloads bleiben unverändert.
Identifiziere vor der Bearbeitung die Dopplung und jegliches versteckte Verhalten,
das die zwei Karten derzeit unterschiedlich implementieren.
Die Formulierung „Verhalten bewahren“ reicht für sich allein nicht aus. Benenne das Verhalten, das wichtig ist.
Prompte ChatGPT, damit es nützliche Tests schreibt
Bitte nicht ohne einen Vertrag um „Tests für diese Komponente“. Benenne die Szenarien:
Schreibe Tests für das Passwort-Zurücksetzen-Formular mit dem bestehenden Test-Stack.
Decke Folgendes ab:
1. Bei einer ungültigen E-Mail wird die lokalisierte Validierungsmeldung angezeigt;
2. beim Absenden wird die normalisierte E-Mail einmal gesendet;
3. ein Netzwerkfehler bewahrt den eingegebenen Wert und zeigt den bestehenden Fehlerzustand;
4. eine erfolgreiche Antwort kündigt die Bestätigung an, ohne offenzulegen, ob
ein Konto existiert.
Mocke keine Implementierungsdetails. Bevorzuge zugängliche Rollen und Bezeichnungen.
Das sagt dem Assistenten, was ein Nutzer tun können muss und welches Datenschutzverhalten nicht regressieren darf.
Prompte ChatGPT, unbekannten Code zu erklären
Ein Erklärungs-Prompt sollte einen Nachweispfad anfordern, keine Zusammenfassung:
Erkläre, wie der Authentifizierungszustand in diesem Repository zum Abrechnungsbildschirm gelangt.
Verfolge den Weg vom Provider über den Route Guard bis zum Checkout-Aufruf. Benenne die
beteiligten Dateien und exportierten Symbole. Trenne bestätigtes Verhalten von Annahmen
und liste auf, was du als Nächstes prüfen würdest, wenn etwas unklar ist.
Dieses Format erleichtert es, eine fehlende Abhängigkeit oder eine erfundene Verbindung zu erkennen.
Stelle Repository-Kontext gezielt bereit
ChatGPT ist zuverlässiger, wenn du ihm den engsten Kontext gibst, der die Frage beantwortet:
- einen fehlschlagenden Test plus den Code, den er ausführt;
- die Komponente und den Hook, die ihren Zustand besitzen;
- ein Request/Response-Beispiel, aus dem sensible Werte entfernt wurden;
- die Projektkonventionen, die die Änderung einschränken;
- eine kurze Liste von Dateien, die absichtlich außerhalb des Umfangs liegen.
Lade keine Geheimnisse, Produktionszugriffstokens, Kundendaten oder private Logs hoch, die du nicht teilen darfst. Ersetze diese Werte durch realistische Schwärzungen und behalte das Verhalten bei, über das du nachdenken musst.
Für das allgemeine Vorgehen hinter diesen Prompts lies wie man bessere KI-Prompts schreibt. Für eine rollenbasierte Sammlung von Mustern für Implementierung und Review fahre mit Prompt Engineering für Entwickler fort. Nutze Prompt-Engineering-Beispiele für Softwareentwickler, wenn du eine ausgearbeitete Anfrage mit Vorher-Nachher-Vergleich möchtest, und verwende die Prompt-Vorlagen für das Debugging von Produktionsproblemen, bevor du einen Live-Fehler untersuchst.
Schließe mit Validierung ab, nicht mit generiertem Code
Generierter Code ist ein Vorschlag. Führe die relevanten Tests aus, prüfe den Diff und erprobe den betroffenen Pfad selbst. Wenn die Arbeit Befehlsausgabe, Fehler oder Shell-Skripte betrifft, gehört die Reproduktion des Ablaufs zur Validierung – sie ist kein optionales Extra. Nutze den browserbasierten Bereich zum Üben der Kommandozeile, um dir diese Gewohnheit mit echten Befehlseingaben und Feedback anzueignen.
Quellen
Diese Dokumentationslinks liefern verlässliche Details zu den in diesem Artikel verwendeten Befehlen.