Richtlinien für Punkteabzüge

Programmierung (jeweils -1 bis -3 Punkte)

  • Lösung unklar strukturiert
  • Komplizierte Lösung
  • Hohe Komplexität der Ausdrücke
  • Falsche Wahl der Datentypen (z.B. float statt int)
  • Unnötiger Import oder Deklaration von Klassen bzw. Variablen
  • Unnötige Zuweisungen
  • "Toter" Programmcode
  • Umständliche Formulierungen, zum Beispiel:
    • Vergleiche auf true oder false:
      if (a == true)
      if (a == false)
    • sinnlose Verzweigungen:
      if (a) return true; else return false;
      if (a) return false; else return true;
  • Konkatenation von Strings in Schleifen ohne StringBuilder:
    while (...) { aString = aString + getString(...); }
  • Zugriff auf Schleifenlaufvariable nach Verlassen der Zählschleife (for)
  • Veränderung der Schleifenlaufvariable in der Zählschleife

Programmierstil (jeweils -1 Punkt)

  • Ausdruckslose Namen für Variablen und Felder
  • Schlechte optische Aufbereitung des Programmtextes (z.B. Einrückungen)
  • Schlechte oder sinnlose Kommentierung (Qualität geht über Quantität)
  • Konstante Werte im Programmtext statt benannter Konstanten
  • Unleserliche Ausdrücke (z.B. wegen fehlender Klammerung)
  • Abweichen von Englisch als Kommentar- oder Bezeichnersprache
  • Schlechter oder inkonsistenter Stil (siehe Stilrichtlinien)
  • Unbehandelte Compiler Warnings

Programmierrichtlinien

Das Ziel von einheitlichen Programmierrichtlinien ist es die Lesbarkeit von Programmen zu erhöhen. Das hilf zum einen die Lösung zu verstehen, zum anderen ist das finden von Fehler einfacher. Es gibt viele Richtlinien für Java. In dieser Übung orientieren wir uns an den Google Java Style Guidelines. Die Einrückungen sehen wir nicht so streng, solange diese einheitlich sind.

Namenskonvention

Verwenden beschreibende, möglichst kurze Namen. Vermeiden Sie Namen mit nur einem Buchstaben. Eine Ausnahmen sind Laufvariablen in Schleifen, z.B. i, j, k. Verwenden Sie ausnahmslos Englische Ausdrücke.

Typ Wortart Groß-/Kleinschreibung Beispiel
Variablen, Felder Substantiv, Adjektiv start with lowercase version, wordSize, full, ready
Konstanten Substantiv, Adjektiv all-uppercase VERSION, WORD_SIZE, FULL, READY
Types Substantiv start with uppercase File, TextFrame
Prozeduren Verb start with lowercase writeString
Funktionen Substantiv, Adjektive start with lowercase position, empty equals
Packages Substantiv all lowercase swing, util

Namen mit mehreren Wörtern werden in Java üblicherweise mit Camel Case getrennt, z.B. wordSize oder writeString. Konstanten bilden einen Ausnahme da diese durch den Underscore "_" getrennt werden. Packages bestehen nur aus einzelnen Wörtern, können aber hierarchisch angeordnet werden. Zum Beispiel at.jku.ssw.

Kommentare

  • Qualität vor Quantität
  • Kommentieren Sie nur wichtige Abschnitte, Annahmen, Verhalten, das nicht aus dem Quellcode ersichtlich ist.
  • Wie für Variablennamen gilt: English only!