Supponiamo che io abbia un metodo
public List<User> GetBatchOfUsers(IEnumerable<int> userIDs)
{
List<User> users = new List<User>();
// some database stuff
return users;
}
Ho letto che sarebbe meglio restituire un'interfaccia (o IList
o IEnumerable
) invece di restituire a List
. Alcuni argomenti che ho sentito per farlo sono che nasconde i dati e offre allo sviluppatore API la flessibilità di modificare la rappresentazione interna dei dati in un secondo momento.
La mia preoccupazione per la restituzione di una IEnumerable
è che si perde funzionalità, come l'accesso casuale e la Count
proprietà.
So che accettare un IEnumerable
parametro come ha un senso, in quanto offre al consumatore la massima flessibilità per inviare dati al mio metodo, l'insieme minimalista di requisiti per il funzionamento del metodo.
Qual è la migliore pratica per il tipo di reso?