isEmpty()-Methode für Lisatble

Hallo zusammen Smiley Happy

In Projekten sehe ich manchmal Code in Modulen à la:

masterElement.getChildren(IDProvider.class, true).toList().isEmpty();

Um zu prüfen, ob das Listable leer ist, werden quasi zu erst alle Elemente in eine Liste umkopiert, um dann letztendlich nur zu prüfen, ob diese leer ist. Bei entsprechend großen Listen ist dies natürlich nicht besonders performant.

Das ganze kann natürlich auch performanter refactored werden:

masterElement.getChildren(IDProvider.class, true).getFirst() == null;

Der JavaDoc zur Methode getFirst() lautet: returns: The first element or null, if empty. (Ich gehe davon aus, dass sich das empty auf das ganze Listabale bezieht und nicht nur auf das erste Element, dass ja theoretisch tatsächlich null sein könnte aber praktisch nicht sehr sinnvoll wäre)

Wenn das erste Element des Listable null ist, dann sind demzufolge auch keine Elemente verfügbar und man hat das gleiche Ziel erreicht bei der Prüfung. Leider ist diese Schreibweise nicht sehr intuitiv lesbar. Als Quickwin wäre ich deshalb dafür, dem Listable-Interface eine Methode isEmpty() hinzuzufügen, die im Hintergrund genau dies prüft. Das würde den Code meiner Meinung nach deutlich angenehmer lesbar und verständlicher machen.

Wenn ich einen Denkfehler habe, dann korrigiert mich gern :smileygrin:

Viele Grüße

Rico

1 Comment
kohlbrecher
Crownpeak employee
Crownpeak employee

Hallo Rico,

wir haben dein gewünschtes Feature mit der Version 2020-08 umgesetzt. Hier der entsprechende Auszug aus den Releasenotes:

Es wurde für de.espirit.common.util.Listable die Convenience.Methode isEmpty() eingeführt, mit der direkt geprüft werden kann, ob das entsprechende Objekt gefüllt ist. Weitere Informationen können dem Kapitel „Modul-Entwicklung, Skripte, API: Einführung einer neuen Convenience.Methode "isEmpty()" “ entnommen werden.

Viele Grüße

Jan