Java Code-Konventionen
Im Internet, der Literatur und selbst in Lehrtexten findet man gelegentlich Java-Quelltexte, die gemäß den Konventionen anderer Programmiersprachen (PHP, C/C++...) mit Unterstrichen, Dollarzeichen, u.ä. verfasst wurden oder in denen die Groß-/Kleinscheibung syntaktischer Strukturen nicht oder unzureichend berücksichtigt wird. Dies erschwert nicht nur die Lesbarkeit und erhöht den Wartungsaufwand eines Programms, sondern kann sogar zu Fehlern führen, die seine Kompilierbarkeit verhindern.
Der Artikel gibt eine Zusammenfassung nicht aller, aber der gängigsten Regeln.2, 3
Dateien
Quelltext-Dateien
- ...besitzen die Endung
.java
. - ...sollten nicht länger als 2000 Zeilen sein.
- ...sollten nur jeweils eine als
public
deklarierte Klasse oder ein Interface enthalten. - Der Klassenname muss dem Dateinamen entsprechen und in CamelCase1-Schreibweise mit beginnendem Großbuchstaben geschrieben werden.
- ...sollten die folgende Ordnung aufweisen:
- Einfacher mehrzeiliger Einleitungskommentar mit Angabe von Autor, Datum, Copyright, Zweck des Programms
- Package-Statement
- Import-Anweisungen
- Klassen-/Interface-Dokumentation als Javadoc-Kommentar
- Klassen-/Interface-Statement
- statische Variablen in der Reihenfolge
public, protected, private
- Instanzvariablen in der Reihenfolge
public, protected, private
- Konstruktoren
- Methoden
Binärcode-Dateien
Binärcode-Dateien besitzen die Endung .class
.
Zeilen
- Die Zeilenlänge sollte 80 Zeichen nicht überschreiten.
- Einrückung: 4 Leerzeichen
- Notwendige Zeilenumbrüche sollten nach den folgenden Regeln
erfolgen
- nach Kommata
- vor Operatoren
- höherrangige Umbrüche bevorzugen
- Ergibt sich aus den vorangehenden Regeln eine unübersichtliche Formatierung, so sollte eine Einrückung von 8 Leerzeichen bevorzugt werden.
Kommentare
Java kennt die folgenden drei Kommentarformen
// |
Einzeiliger Kommentar der Angaben zur speziellen
Implementierung macht. Der Kommentar beginnt bei den
Kommentarzeichen ('// ') und endet mit dem jeweiligen
Zeilenumbruch.Mehrere unmittelbar aufeinander folgende einzeilige Kommentare sollten vermieden werden, können jedoch zum Auskommentieren von Quelltextanteilen verwendet werden. // Kommentar int i = 0; // Kommentar |
/*...*/ |
Mehrzeiliger Kommentar der Angaben zur speziellen
Implementierung macht. Er kann bei entsprechender Kürze auch
einzeilig sein./* Kommentar */ /* * Kommentar */ |
/**...*/ |
Javadoc-Kommentar der in einfacher HTML-Formatierung vorliegen
kann. Die genaue Ausgestaltung von Dokumentationskommentaren ist
gesondert geregelt und kann unter https://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html
gesondert nachgelesen werden. Javadoc-Kommentare sollten nicht innerhalb von Methoden oder Konstruktoren erfolgen. /** * Kommentar */ |
Deklaration und Initialisierung
- Deklarationen von Variablen sollten nur eine pro Zeile erfolgen,
um sie mit vorangesetzten Kommentaren versehen zu können.
Mehrere Deklarationen pro Zeile sind bei gleichem Typ jedoch
möglich.
int i = 0; int j = 34; double k, l; // Möglich, aber sollte vermieden werden
Methodendeklarationen, -aufrufe und Variablendeklarationen verschiedenen Typs müssen jeweils in einer eigenen Zeile erfolgen. - Mit Ausnahme von Zählvariablen von
for
-Schleifen sollten lokale Variablen immer am Anfang eines Blockes deklariert und möglichst sofort initialisiert werden. Ein Block ist ein Quelltextbereich, der in geschweifte Klammern{ ... }
eingeschlossen ist.
Klassen-, Interface- und Methodendeklaration
- Kein Leerzeichen zwischen Methodennamen und der folgenden öffnenden runden Klammer
- Die öffnende geschweifte Klammer eines Blockes sollte, mit einem Leerzeichen getrennt, in der Zeile des Deklarations-Statements stehen.
- Die schließende geschweifte Klammer eines Blockes sollte in
einer neuen Zeile auf Einrückungsebene des zugehörigen
Statements erscheinen.
void print(int i) { System.out.println(i); }
Statements
- Für jedes Statement sollte eine eigene Zeile verwendet werden.
- Bei Bedingungen und Verzweigungen sollten, wie bei Methoden
auch, die geschweiften öffnenden Klammern des Blockes am Ende
der Statementzeile stehen. Die schließende geschweifte Klammer
eröffnet eine neue Zeile auf Einrückungsebene des
Statements.
for (int i = 0; i < 10; i++) { if (i == 5) { System.out.println(i); } }
Leerzeichen
- ...stehen zwischen Schlüsselwörtern und runden Klammern, jedoch nicht nach Methodennamen.
- ...stehen nach Kommata in Argumentlisten
void print(int i, double j)
- ...stehen zwischen binären Operatoren und ihren Operanden
int i = 5;
- ...stehen nicht zwischen unären Increment- und
Decrement-Operatoren und deren Operanden
a++, --i
- ...stehen zwischen den Ausdrücken eines
for
-Statementsfor (int i = 0; i < 5; i++)
- ...stehen nach expliziten Casts
float f = 3.14f; double d = (double) f;
Namenskonventionen
Alle Bezeichner sollten grundsätzlich beredt sein, und
möglichst intuitiv den Zweck angeben, für den sie stehen.
Lediglich nur kurzfristig benötigte Werte, wie bspw.
Zählvariablen, können durch Kurzbezeichner
repräsentiert werden.
Alle Bezeichner müssen aus
alphanumerischen Zeichen des ASCII-Zeichensatzs bestehen, dürfen
Untersriche enthalten, jedoch nicht mit einer Ziffer beginnen.
- Klassen- und Interface-Bezeichner sollen mit großem
Anfangsbuchstaben in CamelCase1-Schreibweise
geschrieben werden.
class TestConverterGUI
- Variablen- und Methoden-Bezeichner sollen mit Ausnahme von
Klassenkonstanten mit kleinem Anfangsbuchstaben in CamelCase1-Schreibweise geschrieben werden
String studentName; void printStudentName()
. - Klassenkonstanten (
static final
deklarierte Variablen) werden durchgehend mit Großbuchstaben geschrieben. Werden mehrere Worte verwendet, so werden diese durch Unterstriche getrennt.static final int BORDER_WIDTH = 5;
1) Unter CamelCase versteht man eine
Schreibweise, bei der aufeinander folgende Begriffe ohne Leerzeichen
an den vorangehenden angefügt werden, wobei deren erste
Buchstaben jeweils groß geschrieben werden. Bsp.: DampfSchiffFahrt.
Die Schreibweise des allerersten Buchstabens richtet sich nach den
Code-Konventionen (Klassen - groß, Variablen - klein, etc.).
2) Quelle: https://www.oracle.com/technetwork/java/index-135089.html
3) Die hier dargestellten Code-Konventionen werden
auch auf javabeginners.de
weitgehend eingehalten, an einigen Stellen jedoch bewusst
durchbrochen, um eine für Anfänger hilfreiche Kürze
und Klarheit des Quelltextes zu sichern. Insbesondere auf Kommentare
wird weitgehend verzichtet, da die Quelltexte und Beispiele in der
Regel durch zusätzliche Texte erläutert werden.
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.