Die Einhaltung von Namenskonventionen ist in der Java-Entwicklung ein zentraler Bestandteil der Codequalität. Sie fördern die Lesbarkeit, erleichtern die Wartung und sorgen für ein einheitliches Erscheinungsbild des Codes – unabhängig davon, wer ihn geschrieben hat. In diesem Artikel werden die üblichen Namenskonventionen in der Java-Entwicklung vorgestellt, gegliedert nach den wichtigsten Sprachelementen: Klassen, Interfaces, Methoden, Variablen, Pakete, Enums, Annotationen und mehr.

1. Klassen

Konvention: CamelCase, Beginn mit einem Großbuchstaben (UpperCamelCase oder PascalCase)

Beispiel:

public class CustomerService {}
public class OrderProcessor {}
Code-Sprache: PHP (php)

Richtlinien:

  • Der Name sollte ein Substantiv oder eine Substantivphrase sein.
  • Er sollte den Zweck der Klasse beschreiben.
  • Abkürzungen sollten sparsam und konsistent verwendet werden (z. B. XmlParser, nicht XMLparser oder xmlParser).

2. Interfaces

Konvention: Wie bei Klassen: UpperCamelCase

Beispiel:

public interface Serializable {}
public interface DataProvider {}
Code-Sprache: PHP (php)

Richtlinien:

  • Interfaces benennen häufig Fähigkeiten (Adjektive wie Readable, Runnable) oder Rollen (Observer, Listener).
  • Das Präfix „I“ (wie IService) ist in der Java-Welt ungewöhnlich und sollte vermieden werden, da es aus der .NET-Welt stammt.
  • Wenn ein Interface eine Funktionalität beschreibt, die eine konkrete Klasse implementiert, sollte der Name abstrakt genug sein, um verschiedene Implementierungen zuzulassen.

3. Methoden

Konvention: camelCase, Beginn mit einem Kleinbuchstaben

Beispiel:

public void processOrder() {}
public String getCustomerName() {}
Code-Sprache: JavaScript (javascript)

Richtlinien:

  • Der Name sollte ein Verb oder eine Verbphrase sein.
  • Getter und Setter folgen dem Schema getX() und setX() (z. B. getName(), setAge()).
  • Boolean-Methoden beginnen üblicherweise mit is, has oder can (z. B. isActive(), hasPermission()).

4. Variablen

4.1 Lokale Variablen und Parameter

Konvention: camelCase, Beginn mit einem Kleinbuchstaben

Beispiel:

int itemCount;
String customerName;
Code-Sprache: JavaScript (javascript)

Richtlinien:

  • Der Name sollte beschreiben, was die Variable enthält.
  • Kurze Namen wie i, j oder tmp sind in kurzen Schleifen akzeptabel, sollten aber nicht über ihren Gültigkeitsbereich hinaus verwendet werden.

4.2 Konstanten

Konvention: Alle Buchstaben groß, Worte durch Unterstrich getrennt (UPPER_SNAKE_CASE)

Beispiel:

public static final int MAX_RETRY_COUNT = 5;
public static final String DEFAULT_ENCODING = "UTF-8";
Code-Sprache: PHP (php)

Richtlinien:

  • Konstanten sind in der Regel static final.
  • Sie sollten global verständlich sein und unveränderlich bleiben.

5. Pakete

Konvention: Alles in Kleinbuchstaben, getrennt durch Punkte

Beispiel:

de.beispiel.shop.kunde;
com.example.project.util;
Code-Sprache: CSS (css)

Richtlinien:

  • Der Paketname beginnt typischerweise mit der umgekehrten Internet-Domain (z. B. com.example).
  • Es folgen funktionale oder technische Subpakete (model, service, controller, util etc.).
  • Keine Unterstriche oder Großbuchstaben.

6. Enums

Konvention (Enum-Typ): UpperCamelCase
Konvention (Enum-Werte): UPPER_SNAKE_CASE

Beispiel:

public enum OrderStatus {
    PENDING,
    SHIPPED,
    DELIVERED,
    CANCELLED
}
Code-Sprache: PHP (php)

Richtlinien:

  • Enum-Namen sind Substantive und beschreiben eine Kategorie von Werten.
  • Die Konstanten sind in Großbuchstaben, um ihre Unveränderlichkeit zu betonen.
  • Wenn die Enum-Werte viele Metadaten enthalten, ist auch eine differenziertere Benennung möglich – in einfachen Fällen bleibt man bei der Großschreibung.

7. Annotationen

Konvention: UpperCamelCase, enden häufig auf Annotation oder sind beschreibend

Beispiel:

public @interface NotNull {}
public @interface Transactional {}
Code-Sprache: PHP (php)

Richtlinien:

  • Der Name sollte eine klare Aussage darüber treffen, was durch die Annotation bewirkt oder markiert wird.
  • Es ist üblich, Annotationen mit @ zu versehen, wenn sie verwendet werden, aber nicht in der Deklaration (@NotNull vs. public @interface NotNull).

8. Generische Typen

Konvention: Einzelne Großbuchstaben, häufige Buchstaben sind:

  • T für „Type“
  • E für „Element“
  • K für „Key“
  • V für „Value“

Beispiel:

public class Box<T> {
    private T content;
}
Code-Sprache: PHP (php)

Richtlinien:

  • Vermeide lange generische Typbezeichner.
  • Wenn mehrere Generics verwendet werden, sollten die Buchstaben konsistent und sinnvoll gewählt sein.

9. Testklassen

Konvention: Entweder XyzTest oder TestXyz, wobei Xyz die getestete Klasse ist.

Beispiel:

public class CustomerServiceTest {}
Code-Sprache: PHP (php)

Richtlinien:

  • Testmethoden beschreiben möglichst klar den getesteten Fall, z. B. shouldReturnCustomerById() oder throwsExceptionWhenIdIsNull().

Zusammenfassung der Konventionen

ElementBeispielStil
KlasseOrderServiceUpperCamelCase
InterfaceDataProviderUpperCamelCase
MethodecalculateTotal()lowerCamelCase
VariabletotalPricelowerCamelCase
KonstanteMAX_BUFFER_SIZEUPPER_SNAKE_CASE
Paketcom.example.utillower.case.naming
EnumOrderStatus / SHIPPEDUpperCamelCase / UPPER_SNAKE_CASE
Annotation@OverrideUpperCamelCase
Generics<T, K, V>Single Uppercase

Fazit

Namenskonventionen sind kein Selbstzweck – sie dienen der Verständlichkeit und Wartbarkeit des Codes. Besonders in Teamprojekten ist es entscheidend, dass alle Entwickler denselben Konventionen folgen. Die hier dargestellten Regeln orientieren sich an den offiziellen Empfehlungen von Oracle und dem Java Language Specification (JLS) sowie an der Praxis etablierter Open-Source-Projekte. Durch konsistente Benennung wird der Code nicht nur schöner, sondern auch robuster, da Missverständnisse und Fehlerquellen minimiert werden.