Oggi, parlando con alcuni miei colleghi, stavamo discutendo dell'uso delle tuple. Il problema specifico era: abbiamo un'API che restituisce un elenco di alcuni tipi di oggetti (diciamo istanze POJO)
public List<Pojo> getPojos()
abbiamo deciso di utilizzare la paginazione per evitare enormi risposte
public List<Pojo> getPojos(int page, int pageSize)
il passo successivo è stato: possiamo restituire sia la lista che il booleano dicendo se sono disponibili più risultati che impediscono chiamate inutili?
Il mio approccio era considerare i risultati come una coppia di valori
public Pair<List<Pojo>, Boolean> getPojos(int page, int pageSize)
Alcuni colleghi dicono che questo approccio può nascondere il significato delle variabili restituite perché non è esplicito ciò che significa il booleano, la loro proposta era di introdurre un oggetto "ad hoc" per gestire la risposta
class PojoResponse{
List<Pojo> result;
Boolean hasMore;
}
public PojoResponse getPojos(int page, int pageSize)
A mio parere, questa soluzione rompe l'uniformità delle API, introduce nuove classi che dovrebbero essere mantenute e, a mio parere, nasconde il vero obiettivo del metodo, in questo caso, restituisce un elenco di POJO.
Qual è la tua opinione su questo problema? Trovare articoli su questi "problemi di stile" su Internet non è sempre così facile.