Strukturierte Programmierung/ Checkliste
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.
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 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 im Quelltext vor Ort qualifiziert bezeichnen.
- Rückgabewerte von qualifiziert bezeichneten Unterprogrammaufrufen in korrekt deklarierten Variablen zwischenspeichern und nicht als Ersatzausdruck verwenden.
Rückgabewerte
[Bearbeiten]Haben alle Methoden mit Rückgabewert eine einzige Rücksprunganweisung ?
- Es gibt nur eine einzige Rücksprunganweisung.
- Die Rücksprunganweisung ist die letzte Anweisung eines Unterprogramms.
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.