Zum Inhalt springen

Strukturierte Programmierung/ Checkliste

Aus Wikibooks

Diese Checkliste soll dazu dienen, wichtige Kriterien für die Erstellung von strukturierten Programmen schnell überprüfen zu können.

Kopfkommentar

[Bearbeiten]

Hat jede Quelltextdatei im Dateikopf einen Kommentar mit wichtigen Angaben ?

Dazu können beispielsweise die folgenden Merkmale gehören:

  • Dateiname
  • Urheber
  • Ort
  • Nutzungsrecht
  • Erstellungsdatum
  • Datum der letzten Änderung
  • Versionsbezeichnung / Versionshistorie
  • Programmiersprache
  • Entwicklungssystem
  • Beschreibung des Dateiinhalts

Unterprogramme

[Bearbeiten]

Hat jedes Unterprogramm einen Kommentar mit den folgenden Angaben ?

  • Beschreibung zum Inhalt oder zur Funktion.
  • Beschreibung aller Parameter mit Datentyp.
  • Beschreibung des Rückgabewerts mit Datentyp.

Bezeichner

[Bearbeiten]

Sind alle Bezeichner von Variablen oder Unterprogrammen ihrer Bedeutung gemäß sprechend bezeichnet ?

Beispiele:

  • Variablenname "breite" statt nur "b".
  • Parameter von Unterprogrammen sind sprechende Bezeichner und nicht (komplexe) Ausdrücke oder Literale (direkt eingegebene Werte).
  • Verwendung von i, j und k für ganzzahlige Zählvariablen.
  • Verwendung von x, y und z für Koordinaten.
  • Hinzufügung eines erläuternden Kommentars.

Schreibstil

[Bearbeiten]

Ist der Schreibstil (Blockbildung, Einrückung und Klammersetzung) konsequent eingehalten worden und so gewählt, dass der Quellcode gut lesbar und der Inhalt schnell erkennbar ist ?

Beispiele:

  • Maximal nur eine Anweisung pro Programmzeile.
  • Anfang und Ende von allen Blockanweisungen haben die gleiche Einrückung.
  • Ausdrücke und Blockstrukturen haben zur Vermeidung von Komplexität nicht zu viele Unterstrukturen.

Anweisungsstrukturen

[Bearbeiten]

Sind die Anweisungsfolgen sowie Kontrollstrukturen vom Umfang her so gestaltet, so dass sie vollständig und bequem auf einer Bildschirmseite gelesen werden können ?

  • Zu lange Anweisungsfolgen können durch geschickte und sinnvolle Auslagerung von Programmcodeblöcken in Unterprogramme eingekürzt werden.
  • Komplexe Datenstrukturen können durch Unterdatenstrukturen übersichtlicher gestaltet werden.

Codewiederholung

[Bearbeiten]

Wird Codewiederholung konsequent vermieden ?

  • Verwendung von Konstanten statt wiederholten literalen Werten.
  • Verwendung von Variablen für mehrfach erforderliche Zwischenergebnisse.
  • Verwendung von Unterprogrammen für wiederholt erforderliche Anweisungen.
  • Verwendung von Objektstrukturen für ähnliche Daten und Funktionen.

Lokalität

[Bearbeiten]

Wird bei den Sichtbarkeiten von allen Bezeichnern in der jeweiligen Deklaration das Prinzip der Lokalität berücksichtigt ?

  • Vermeidung von überflüssigen globalen Variablen.
  • Vermeidung von nicht erforderlichen Exporten in Programmschnittstellen.
  • Vermeidung der mehrfachen Verwendung von Variablen für verschiedene Zwecke.

Qualifizierte Bezeichnung

[Bearbeiten]

Werden alle externen Bezeichner qualifiziert referenziert ?

  • Globale Import-Anweisungen unterlassen, sondern importierte Bezeichner von Variablen und Unterprogrammen im Quelltext vor Ort qualifiziert bezeichnen.
  • Rückgabewerte von qualifiziert bezeichneten Unterprogrammaufrufen in korrekt deklarierten Variablen zwischenspeichern und nicht als Ersatzausdruck verwenden.

Parameter

[Bearbeiten]

Werden alle Parameter beim Aufruf eines Unterprogramms durch eine eigene Variable mit einem sprechenden Bezeichner ausgedrückt ?

  • Es wird vermieden, Literale als Parameter zu verwenden, wenn deren Bedeutung nicht klar erkennbar ist. Stattdessen können die betreffenden Werte in Variablen zwischengespeichert werden.
  • Es werden keine komplexen Ausdrücke als Parameter verwendet. .
  • Es werden keine Rückgabewerte von Unterprogrammen als Parameter verwendet.

Rückgabewerte

[Bearbeiten]

Haben alle Unterprogramme mit Rückgabewert eine einzige Rücksprunganweisung ?

  • Es gibt nur eine einzige Rücksprunganweisung.
  • Die Rücksprunganweisung ist die letzte Anweisung eines Unterprogramms.
  • Der Rückgabewert wird in einer lokalen Variable des Unterprogramms mit einem sprechenden Bezeichner gespeichert und mit der Rücksprunganweisung zurückgegeben..

Komplexe Operatoren

[Bearbeiten]

Sind alle Operatoren, die Variablen unmittelbar verändern oder den Programmablauf steuern sollen, in einer isolierten vollständigen Anweisung und nicht Bestandteil eines anderen Ausdrucks ?

  • Alle Inkrement- und Dekrement-Anweisungen werden als einzelne Anweisung ausgeführt.
  • Alle Zuweisungsoperatoren werden ohne eine direkte Kombination mit einem anderen Operator verwendet.
  • Keine Verwendung von bedingten Ausdrücken, sondern von Kontrollstrukturen mit Variablen.

Kontrollstrukturen

[Bearbeiten]

Werden Kontrollstrukturen überall so eingesetzt, dass der Programmablauf immer nachvollziehbar und betriebssicher sowie leicht zu warten ist ?

  • Alle Bedingungen von Fallunterscheidungen und Schleifen sind eindeutig und leicht erkennbaren Blockstrukturen zugeordnet.
  • Optionale, eine Kontrollstruktur unterbrechende Anweisungen wie goto, break oder continue, sind kategorisch zu unterlassen.
  • Sicherstellung von unerlaubten Operanden oder Parametern.

Unerreichbarer Code

[Bearbeiten]

Ist Quellcode entfernt, der nie ausgeführt werden oder keinen Einfluss auf den Programmablauf nehmen kann ?

  • Keine Unterprogramme, die nie aufgerufen werden (können).
  • Keine Bedingungen, die nie oder immer erfüllt sind.
  • Keine Endlosschleifen, da diese das Erreichen des Programmendes verhindern.

Mensch-Maschine-Schnittstellen

[Bearbeiten]

Ist das Programm so gestaltet, dass die Benutzerführung benutzerfreundlich ist ?

  • Evaluation aller Eingaben.
  • Hinweise auf fehlerhafte oder unplausible Werte.
  • Leicht verständliche Ausgaben.