Por que usar tuplas em vez de objetos?
A base de código em que trabalho possui um objeto chamado Par, em que A e B são os tipos do primeiro e do segundo valores do Par. Acho esse objeto ofensivo, porque é usado em vez de um objeto com membros claramente nomeados. Então eu acho isso:
List<Pair<Integer, Integer>> productIds = blah();
// snip many lines and method calls
void doSomething(Pair<Integer, Integer> id) {
Integer productId = id.first();
Integer quantity = id.second();
}
Ao invés d
class ProductsOrdered {
int productId;
int quantityOrdered;
// accessor methods, etc
}
List<ProductsOrderded> productsOrdered = blah();
Muitos outros usos do Par na base de código são igualmente mal cheiroso
Eu pesquisei tuplas no Google e elas parecem ser muitas vezes incompreendidas ou usadas de maneira dúbia. Existe um argumento convincente a favor ou contra seu uso? Compreendo não querer criar enormes hierarquias de classe, mas existem bases de código realistas em que a hierarquia de classes explodiria se as tuplas não fossem usadas?