Clean Code in Java: Prinzipien zum Schreiben von sauberem Code mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum sauberer Code der Schlüssel zu einem erfolgreichen Projekt ist

Früher oder später stößt jeder Entwickler auf „schmutzigen“ Code: bedeutungslose Variablennamen, hunderte Zeilen lange Funktionen, sich wiederholende Blöcke und magische Zahlen. Solcher Code ist schwer zu lesen, schwierig zu warten und nahezu unmöglich zu erweitern, ohne das Risiko, die gesamte Anwendung zu beschädigen. Robert C. Martins Buch „Clean Code“ ist zur Bibel für Programmierer geworden, die qualitativ hochwertigen Code schreiben möchten. In diesem Artikel analysieren wir die Schlüsselprinzipien von Clean Code in Java mit anschaulichen Beispielen, die Ihnen helfen, Ihren Code verständlich, zuverlässig und wartungsfreundlich zu gestalten.



1. Benennung: Sprechen Sie die Sprache des Geschäfts

Der Name einer Variable, Methode oder Klasse sollte die Fragen beantworten: „Was ist das?“ und „Wofür wird es benötigt?“ Vermeiden Sie einbuchstabige Abkürzungen und abstrakte Begriffe.



Schlechtes Beispiel

int d; // Zeit seit der Bestellung (in Tagen)List<String> lst = new ArrayList<>();void prc() { ... }


Gutes Beispiel

int daysSinceOrder;List<String> customerNames = new ArrayList<>();void processPayment() { ... }


Zusätzliche Empfehlungen

  • Klassen — Substantive: Order, CustomerRepository.
  • Methoden — Verben oder Verbpaare: saveOrder(), isValidEmail().
  • Vermeiden Sie „Rausch“-Wörter: Data, Info, Manager — wenn sie keine Bedeutung haben.


2. Funktionen: Kurz, klar, eine Aufgabe

Eine Funktion sollte nur eine einzige Aktion ausführen und diese gut machen. Die ideale Länge beträgt 10–15 Zeilen. Wenn eine Funktion nicht auf den Bildschirm passt, teilen Sie sie auf.



Schlechtes Beispiel: Taschenmesser-Funktion

public void processOrder(Order order) {    // 1. Validierung    if (order == null || order.getItems().isEmpty()) {        throw new IllegalArgumentException("Invalid order");    }    // 2. Rabattberechnung    double discount = 0;    if (order.getTotal() > 1000) discount = 0.1;    // 3. Speichern in der DB    database.save(order);    // 4. E-Mail senden    emailService.sendConfirmation(order.getCustomerEmail());}


Gutes Beispiel: Trennung der Verantwortlichkeiten

public void processOrder(Order order) {    validateOrder(order);    applyDiscount(order);    persistOrder(order);    notifyCustomer(order);}

private void validateOrder(Order order) { if (order == null || order.getItems().isEmpty()) { throw new IllegalArgumentException("Invalid order"); }}

private void applyDiscount(Order order) { if (order.getTotal() > 1000) { order.setDiscount(0.1); }}

private void persistOrder(Order order) { database.save(order);}

private void notifyCustomer(Order order) { emailService.sendConfirmation(order.getCustomerEmail());}


3. Vermeiden Sie Duplikate (DRY) und magische Zahlen

Sich wiederholender Code ist der Hauptfeind der Wartbarkeit. Wenn Sie einen Codeblock kopieren, ist es an der Zeit, ihn in eine separate Methode oder Konstante auszulagern.



Problem: Magische Zahlen

if (age > 18) { ... } // Was ist 18? Das Mindestalter? Eine Rabattschwelle?


Lösung: Konstanten mit Namen

private static final int MINIMUM_DRIVING_AGE = 18;// ...if (age > MINIMUM_DRIVING_AGE) { ... }


Beispiel für Duplizierung

// Schlechtdouble totalForFirst = price1 * quantity1 * 0.95;double totalForSecond = price2 * quantity2 * 0.95;

// Gutdouble calculateLineTotal(double price, int quantity) { return price * quantity * 0.95;}double totalForFirst = calculateLineTotal(price1, quantity1);double totalForSecond = calculateLineTotal(price2, quantity2);


Blogs

Buchempfehlungen