Programmier-Richtlinien vgl. auch http://java.sun.com/docs/codeconv/
Bemerkung o Programme werden häufiger gelesen als geschrieben o Programmtexte müssen gut lesbar und nachvollziehbar sein Feststellung Bemerkung Nicht die konkrete Ausprägung der Programmier- Richtlinien sondern ihr generelles Vorliegen ist wichtig o Aufstellen und Einhalten von Programmier- Richtlinien erleichtert das Lesen, Einarbeiten, und Erweitern von Programmtexten Hinweis o Das Einhalten der Programmier-Richtlinien ist (durch geeignete Werkzeuge) zu überprüfen [Balzert 2001, S. 1068ff] 2
Bezeichner o Bezeichner für Klassen, Methoden, Attribute etc. müssen "sprechend" und selbsterklärend sein o Bezeichner enthalten keine Leerzeichen o in zusammengesetzten Bezeichnern beginnt jedes Wort mit einem Grossbuchstaben (CamelCase) o Bezeichner sollten durchgängig deutsch oder (bevorzugt) englisch sein, Umlaute und Sonderzeichen sind zu vermeiden 3
Klassenbezeichner, Interfacebezeichner o Klassen und Interfaces werden durch Substantive im Singular bezeichnet o Klassen- und Interfacebezeichner beginnen mit Grossbuchstaben class DigitalLibrary; interface Collection; Attributbezeichner o Attribute werden durch Substantive mit evtl. vorangestelltem Adjektiv im Singular bezeichnet o Attributbezeichner beginnen mit einem Kleinbuchstaben int i; Author theauthor; float currentspeed; 4
Methodenbezeichner o Methoden werden durch Verbalphrasen bezeichnet o Methodenbezeichner beginnen mit einem Kleinbuchstaben o Methoden, die auf Attribute lesend (getter) oder schreibend (setter) zugreifen werden durch den Attributbezeichner mit vorangestelltem "get" get" " oder "set" set" benannt setname(); getname(); printname(); 5
Konstantenbezeichner o Konstanten werden durch Substantive in GROSSBUCHSTABEN beschrieben o Teilworte werden durch "_" voneinander getrennt int MAX_AUTHORS = 5; int MIN_WIDTH = 4; o generell sind sinnvoll bezeichnete Konstanten der Verwendung konstanter Werte vorzuziehen o bessere Lesbarkeit o höhere Wartungsfreundlichkeit 6
Struktur (für Java-Programme) o.java-dateien enthalten genau eine Klasse oder genau ein Interface o einleitender Kommentar o Package-Angabe o Import Statement o eine Klasse/Interface Bemerkung die Komponenten sind in der angegebenen Reihenfolge zu notieren o Klassen/Interfaces bestehen aus o einleitender Kommentar o Attribute o statische (Klassen-) Variablen (public, protected, private) o Instanzvariablen (public, protected, private) o Methoden o Konstruktoren o vergleichende Methoden o Methoden mit schreibendem Zugriff o Methoden mit lesendem Zugriff o restliche Methoden 7
generelle Formatierungsrichtlinien o Dateien dürfen nicht mehr als 2000 Zeilen besitzen (2000 Zeilen ist schon viel zu viel) o Zeilen dürfen nicht mehr als 80 Zeichen besitzen o Verfeinerungen (Blöcke) werden 4 Zeichen eingerückt o pro Zeile soll höchstens int i; o eine Variable deklariert werden o ein Programmstatement notiert werden o Leerzeilen trennen i++; o Variablen von Methoden j --; o Methoden von Methoden o (lokale) Variablen vom ersten Programmstatement o Leerzeichen trennen o Schlüsselworte von "(" o Operanden von Operatoren (außer ".") int j; while (i!= 5) { 8
Klammerregeln für Methoden o zwischen Methodennamen und "(" steht kein Leer- zeichen o Blöcke werden in "{" und "" eingeschlossen o öffnende Klammer "{" erscheint in der Zeile des zusammengesetzten Statements o schließende Klammer "" erscheint in einer eigenen Zeile auf der selben Einrückungsstufe wie das zusammengesetzte Statement class MyDemo { int ivar; doit(int i, int j) { ivar = i + j; dosmthelse(int i){ if (i == 0) { System.out.println("Zero"); else { // ( i!= 0) System.out.println("NonZero"); 9
Dokumentation o Klassen werden durch eine Präambel eingeleitet o Autoren o Datum der initialen Erstellung o Versionsnummer o Bearbeitungszustand (geplant, in Bearbeitung, freigegeben) o Änderungshistorie o kurze Aufgabenbeschreibung 10
Dokumentation o Methoden werden durch eine Präambel eingeleitet o Autoren o Datum der initialen Erstellung o Versionsnummer o Bearbeitungszustand (geplant, in Bearbeitung, freigegeben) o Änderungshistorie o kurze Aufgabenbeschreibung der Methode o für Methoden o o o im Code o o Anforderungen an Eingabedaten Anforderungen an Ausgabedaten (incl. Bezug zu Eingabedaten) ist jede Schleife durch ihre Invariante zu dokumentieren ist jeder else-teil einer Verzweigung mit dem hier zutreffenden Prädikat zu kommentieren 11