0%

Kapitel 11

Programme planen, bauen und testen

Beginne mit dem Problem, nicht mit dem Code

Ein leerer Editor kann ein kleines Projekt riesig erscheinen lassen. Die übliche Reaktion ist, einfach den Code zu tippen, der dir gerade einfällt.

Halte zuerst kurz inne. Ein paar Minuten Planung können aus „Baue ein Programm“ eine Reihe von Entscheidungen machen, die du tatsächlich treffen kannst.

Beschreibe den Bedarf

In Kapitel 12 baust du ein Quizprogramm zu einem selbst gewählten Thema. Angenommen, jemand beschreibt es so:

Erstelle mir eine App mit Dictionarys, Schleifen und mehreren Funktionen.

Das klingt konkret, beschreibt aber eine Umsetzung. Es erklärt nicht, was das Programm leisten soll.

Eine hilfreiche Problembeschreibung beginnt stattdessen mit dem gewünschten Erlebnis:

Ich möchte eine kurze Reihe von Fragen beantworten und sehen, wie viele Antworten richtig waren.

Jetzt kannst du zielführende Fragen stellen:

  • Welche Informationen gehören zu jeder Frage?

  • Was zählt als übereinstimmende Antwort?

  • Was soll passieren, wenn die lernende Person nichts eingibt?

  • Was soll das Endergebnis zeigen?

  • Was ist die kleinste Version, die bereits nützlich wäre?

Die Programmierwerkzeuge können einen Moment warten. Stelle zuerst sicher, dass du das Ergebnis verstehst, das du erzeugen möchtest.

Schreibe eine kurze Projektbeschreibung

Eine Projektbeschreibung beschreibt knapp das Programm und seine Grenzen:

Erstelle ein Programm, das einen Quiztitel und mindestens drei Datensätze mit Fragen und Antworten speichert. Stelle jede Frage, vergleiche die Antworten ohne Berücksichtigung umgebender Leerzeichen und der Groß- und Kleinschreibung und zeige an, wie viele Antworten richtig waren. Wenn eine Antwort leer ist, stelle dieselbe Frage erneut.

Diese Beschreibung sagt, was das Programm erhält, welche Regel es anwendet und was es erzeugt. Sie schreibt weder Variablennamen noch die genaue Anzahl der Funktionen vor.

Trenne Anforderungen von der Umsetzung

Eine Anforderung beschreibt beobachtbares Verhalten:

  • Stelle jede geplante Frage.

  • Behandle Antworten mit unterschiedlicher Groß- und Kleinschreibung oder umgebenden Leerzeichen als gleich.

  • Akzeptiere keine leere Antwort.

  • Zeige die Anzahl der richtigen Antworten an.

Eine Entscheidung zur Umsetzung beschreibt, wie der Code dieses Verhalten erreicht:

  • Speichere jede Frage in einem Dictionary.

  • Verwende eine for-Schleife, um die Fragen zu durchlaufen.

  • Nenne die Hauptfunktion run_quiz.

Entscheidungen zur Umsetzung sind wichtig, sollten aber den Anforderungen dienen. Wenn du mit deiner Lieblingsfunktion der Sprache beginnst, löst du womöglich elegant das falsche Problem.

Begrenze ein Projekt, bevor du es ausbaust

Die erste Version braucht keine Konten, keinen Timer, keine Online-Rangliste und kein animiertes Konfetti für die volle Punktzahl. Daraus können spätere Verbesserungen werden.

Verwende drei Kategorien für den Umfang:

  • muss: das kleinste Verhalten, das das beschriebene Problem löst;

  • kann: eine nützliche Verbesserung, sobald das erforderliche Verhalten funktioniert;

  • jetzt nicht: eine Idee, die bewusst außerhalb dieser Version bleibt.

„Jetzt nicht“ bedeutet nicht „nie“. Es schützt das aktuelle Projekt davor, zu groß zu werden, um es fertigzustellen oder zu testen. Den Umfang jetzt zu begrenzen kann dir einen Nachmittag ersparen, an dem du das falsche Programm verfeinerst.

Eine wiederholbare Startroutine

Vor dem Code:

  1. Beschreibe den Bedarf des Nutzers in ein oder zwei Sätzen.

  2. Benenne das kleinste nützliche Ergebnis.

  3. Liste die beobachtbaren Verhaltensweisen auf, die unbedingt erforderlich sind.

  4. Ordne reizvolle Extras unter „kann“ oder „jetzt nicht“ ein.

  5. Wähle erst dann Datenstrukturen, Funktionen, Schleifen und Bedingungen.

Dieses Kapitel macht diese Routine ausdrücklich zum Thema. Teile davon hast du bereits in früheren Projekten verwendet. Jetzt übst du sie als eigenständige Fähigkeit.

Welche Aussage ist eine Anforderung und keine Entscheidung zur Umsetzung des Quizprogramms?

Eine erste Version muss gespeicherte Fragen stellen und die Punktzahl anzeigen. Welche Funktion gehört am eindeutigsten unter „jetzt nicht“?