Hallo zusammen
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