magicmarcy.de | Project Lombok

Project Lombok

14. Juli 2021 - Lesezeit: 3 Minuten

Bevor du nicht mindestens tausend Getter & Setter geschrieben hast, verwendest du kein Lombok!

Mit diesem Worten meines Kollegen begann irgendwann meine Karriere als Java-Entwickler. Und er sollte damit auch recht behalten …

Project Lombok, dass ist eine Java Bibliothek die einem viel Arbeit abnehmen kann aber auch Risiken birgt. Unter anderem können damit Getter & Setter sowie Konstruktoren automatisiert (zur Compilezeit) erstellt werden. Dadurch enthält der Java-Code auf den ersten Blick zunächst nur das Nötigste was ihn deutlich lesbarer macht. Dies wird durch den Einsatz von Annotationen realisiert.

Ein Beispiel (ohne Lombok): Eine einfache Klasse mit lediglich vier Feldern

package de.magicmarcy;

public class LombokDemo {
private String vorname;
private String nachname;
private double gewicht;
private int alter;

public LombokDemo() {
super();
}

public LombokDemo(final String vorname, final String nachname,
final double gewicht, final int alter) {

this.vorname = vorname;
this.nachname = nachname;
this.gewicht = gewicht;
this.alter = alter;
}

public String getVorname() {
return this.vorname;
}

public void setVorname(final String vorname) {
this.vorname = vorname;
}

public String getNachname() {
return this.nachname;
}

public void setNachname(final String nachname) {
this.nachname = nachname;
}

public double getGewicht() {
return this.gewicht;
}

public void setGewicht(final double gewicht) {
this.gewicht = gewicht;
}

public int getAlter() {
return this.alter;
}

public void setAlter(final int alter) {
this.alter = alter;
}
}

Dieses Beispiel zeigt, was alles nötig ist (lassen wir toString() und hashCode() mal außen vor) um das Nötigste einer Klasse zu erhalten.

Mit Project Lombok sieht die gleiche Klasse aber nun folgendermassen aus:

package de.magicmarcy;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class LombokDemo {
private String vorname;
private String nachname;
private double gewicht;
private int alter;
}

Der Code, den wir nun selbst schreiben müssen ist deutlich geringer und die ganze Klasse ist viel übersichtlicher. Die “fehlenden” Code-Teile werden durch die Libary zur Compilezeit automatisch in den Code geschrieben. Doch das birgt natürlich auch Risiken und die möchte ich an dieser Stelle nicht außer acht lassen.

Gerade wenn man mit dem Schreiben von Code und dem Verständnis wie alles funktioniert und zusammenhängt noch nicht so wirklich vertraut ist, dann sollte man auf den Einsatz von Lombok auf jeden Fall verzichten. Schon sehr häufig ist es vorgekommen, dass bestimmte Fehler einfach nicht gefunden werden konnten, weil man den Getter oder Setter nicht debuggen konnte. Das ist eine der, in meinen Augen, größten Schwäche beim Einsatz von Lombok.

Anm.: Ja, ich weiß, dass auch dieser Code sich debuggen lässt doch ist das nicht so einfach und unkompliziert wie es ohne der Fall ist.

@Getter, @Setter und @All-, bzw. @NoArgsConstructor suggerieren ja noch ziemlich eindeutig was sie tun, doch was macht eigentlich z.B. @Data?

Gerade “jüngere” Entwickler (aus Erfahrungssicht) werden hier schnell überfordert und die Nachvollziehbarkeit sinkt drastisch. Eine Klasse von etwa 500 bis 1000 Zeilen Code beim Einsatz unter Lombok muss erstmal verstanden werden. Ja, ohne Lombok hätte sie vermutlich das doppelte an Zeilen (oder zumindest 1/3 mehr) doch muss man auch erst einmal wissen, was genau da im Hintergrund so alles passiert.

Gerade bei der Fehleranalyse von fremden Code, wird es bei dem Einsatz dieser Libary häufig schwierig den Überblick zu behalten. Da werden z.B. nur bestimmte Getter & Setter via Lombok gesetzt, Andere aber ausgeschrieben, da sie Felder aus anderen Klassen aufrufen und vieles mehr. Wer da auf den ersten Blick noch schlau wird bekommt vermutlich bald einen Orden.

Project Lombok ist toll und der Einsatz dieser Libary kann wirklich sinnvoll und zeitersparend sein. Trotzdem sollte immer genau geprüft werden ob und in welchem Umfang der Einsatz notwendig und vertretbar ist.

Weitere Infos und Demo’s findest du unter https://projectlombok.org/.

Es wurden noch keine Kommentare verfasst, sei der erste!

Support

Wenn du mich und meine Arbeit unterstützen möchtest, freue ich mich sehr über eine kleine Aufmerksamkeit in Form eines Kaffees ;-)



Weitere Informationen, wie du mich und meine Arbeit unterstützen kannst, findest du hier.