Słyszałem argument, że powinieneś używać najbardziej ogólnego interfejsu, abyś nie był przywiązany do konkretnej implementacji tego interfejsu. Czy ta logika ma zastosowanie do interfejsów takich jak java.util.Collection ?
Wolałbym raczej zobaczyć coś takiego:
List<Foo> getFoos()
lub
Set<Foo> getFoos()
zamiast
Collection<Foo> getFoos()
W ostatnim przypadku nie wiem, z jakim zestawem danych mam do czynienia, natomiast w pierwszych dwóch przypadkach mogę poczynić pewne założenia dotyczące kolejności i wyjątkowości. Czy java.util.Collection ma użyteczność poza byciem logicznym rodzicem zarówno dla zestawów, jak i list?
Jeśli natrafiłeś na kod, który używał Collection podczas przeglądania kodu, w jaki sposób ustaliłbyś, czy jego użycie jest uzasadnione, i jakie sugestie sugerowałbyś, aby zastąpić go bardziej szczegółowym interfejsem?
Collection<List<?>>
? Mów o kodowaniu horroru!