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 IListo 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 Countproprietà.
So che accettare un IEnumerableparametro 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?