members & address research industrial partners teaching publications gallery home page of the group
    clickable logo

Combinatorial Optimization & Graph Algorithms

TU logo

contents
.

department
 .  group
 .  .  members & address
 .  .  research
 .  .  publications
 .  .  cooperation with industry
 .  .  teaching
 .  .  .  summer term 1999
 .  .  .  .  CoMa II
 .  .  .  .  . Programmierregeln
 .  .  project gallery
 .  .  events
 .  .  internals
 .  .  search

Programmierregeln

Der Sinn der folgenden Regeln ist es, Euch auf den Pfad der Tugend, d. h. eines guten Programmierstils, zu führen.

Programme, die ihnen nicht genügen, werden nicht abgenommen und müssen nachgebessert werden.

Die Programme sind ausführlich kommentiert.
Insbesondere ist jede Methode und Klasse (außer init() des Applets) nach dem unten stehenden Standard kommentiert. Kommentierung der Methodenköpfe ersetzt nicht Kommentare an geeigneten Stellen innerhalb der Methoden/Klassen.
Methoden sind kurz und übersichtlich.
Als Richtwert gilt: Keine Methode sollte länger als eine Bildschirmseite (70 Zeilen) sein (gerechnet bei einem Befehl pro Zeile und vielen Leerzeilen). Lieber mehr Methoden als zu wenige einsetzen.
Es dürfen keine nichttrivialen Programmsegmente in gleicher oder nur geringfügig veränderter Form mehrmals im gesamten Programm auftauchen.
Das anscheinend vielgeliebte fünffache Kopieren des gleichen Codestücks mit anschließenden einfachen Änderungen ist hiermit verboten. Solch Code gehört in eigene Methoden verfrachtet.
Variablen dürfen nur im kleinstmöglichen Scope definiert werden.
Instanzvariablen (also solche im Klassenscope), die nur vorübergehend in Methoden benutzt werden, sind nicht erlaubt. Das gleiche gilt für Instanzvariablen, die als bloßer Ersatz für die Parameterübergabe eingesetzt werden.
Variablen müssen sinnvolle Namen haben.
Dadurch wird für uns und Euch das Verstehen des Programms enorm erleichtert.
Alle nichttrivialen Variablen müssen dokumentiert werden.
Vorbei sind die Zeiten, als manche von Euch einfach die Variablen von a an durchbuchstabierten!
Der Quelltext ist sinnvoll einzurücken.
Ansonsten wird das Zuordnen von z. B. Schleifenanfängen und -enden sehr schwierig, worunter erfahrungsgemäß nicht nur derjenige leidet, der das Programm abnehmen soll, sondern auch Ihr selbst.
Fehleingaben des Benutzers werden abgefangen und gemeldet.
Es darf dabei keinerlei Fehlermeldung auf der Console (d. h. im xterm) erscheinen.

Dokumentierstandard

Alle Klassen und Methoden sind in Englisch oder Deutsch nach folgendem Schema zu dokumentieren (zusätzlich zu allen Kommentaren für benutzte Variablen und Programmstücke):

Klassen

Beispiel:
/**
 * A christmas tree that always nicely fits into its canvas.
 * Can be used just like any other Component.
 */
 public class XmasTree
 {
   ...
Vor der Klasse steht also ein mehrzeiliger Kommentar, dessen erste Zeile /** ist und bei dem jede weitere Zeile mit * beginnt. In ein oder mehreren Sätzen sollen dort Sinn und Fähigkeiten der Klasse kurz umrissen werden.

Methoden

Beispiel:
/**
 * Compute the volume of a cube with the specified dimensions.
 *
 * @param h the height of the cube
 * @param w the width of the cube
 * @param d the depth of the cube
 * 
 * @return the volumen of the cube
 *
 * @exception CubeException if any of the given parameters is negative
 */
public double computeVolume(double h, double w, double d) throws CubeException
{
  ...

Es steht direkt vor der Methode ein mehrzeiliger Kommentar, der wieder mit /** und jede weitere Zeile mit * beginnt.

Anschließend ein oder mehrere Zeilen, die die Methode kurz beschreiben. Hierhin gehören auch alle Voraussetzungen, die vielleicht erfüllt sein müssen, bevor die Methode aufgerufen werden sollte.

Es folgen Zeilen der Form
   @param Variablenname Beschreibung
für jeden Parameter der Methode.

In ähnlicher Weise kommt nun eine Zeile der Form
   @return Beschreibung
die den Rückgabewert erklärt. Bei void-Methoden steht natürlich keine solche Zeile.

Falls die Methode eine Ausnahme auswerfen kann, muß diese auch dokumentiert werden durch die Zeile
   @exception Exceptionname Bedingungserläuterung
die in Worten angibt, wann eine solche Exception erzeugt wird.

top top
source last modified: Mon Aug 2 1999, last built: Thu Aug 26 2004
Olaf Jahn <jahno@math.tu-berlin.de>
Validate HTML