Załóżmy, że mam metodę
public List<User> GetBatchOfUsers(IEnumerable<int> userIDs)
{
List<User> users = new List<User>();
// some database stuff
return users;
}
Przeczytałem, że lepiej byłoby zwrócić interfejs (albo IList
albo IEnumerable
), niż zwrócić a List
. Niektóre argumenty, które słyszałem, to to, że ukrywa dane i daje programistom API elastyczność zmiany wewnętrznej reprezentacji danych w późniejszym terminie.
Moją obawą przed zwrotem IEnumerable
jest utrata funkcjonalności, takiej jak losowy dostęp i Count
właściwość.
Wiem, że przyjęcie IEnumerable
parametru jako parametru ma sens, ponieważ daje konsumentowi najlepszą elastyczność w wysyłaniu danych do mojej metody, minimalistycznego zestawu wymagań dla metody do działania.
Jaka jest najlepsza praktyka dla typu zwrotu?