Warum die Verwendung von Tupeln anstelle von Objekten?

Codebase wo ich arbeite hat ein Objekt namens Paar, wo A und B die Typen der ersten und zweiten Werte in das Paar. Ich finden Sie dieses Objekt um beleidigend zu werden, weil Sie benutzt wird, anstatt ein Objekt mit klar benannten Mitglieder. Also ich find das:

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();
}

Statt

class ProductsOrdered {
  int productId;
  int quantityOrdered;
  //accessor methods, etc
}

List<ProductsOrderded> productsOrdered = blah();

Viele andere Verwendungen für das Paar in der codebase sind auch schlecht riechen.

Habe ich Gegoogelt Tupel und Sie scheinen oft missverstanden oder in zweifelhafter Weise. Gibt es ein überzeugendes argument für oder gegen deren Einsatz? Ich kann verstehen, dass Sie nicht wollen, um große Klasse Hierarchien aber sind es realistische codebase, wo die Klasse Hierarchie würde explodieren, wenn Sie Tupel nicht verwendet?

Schreibe einen Kommentar