Supponiamo che 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 ( IList
o IEnumerable
) anziché restituire List
. Alcuni argomenti che ho sentito per averlo fatto sono che nasconde i dati e offre allo sviluppatore dell'API la flessibilità di modificare la rappresentazione interna dei dati in un secondo momento.
La mia preoccupazione per il ritorno di un IEnumerable
è che si perde la funzionalità, ad esempio l'accesso casuale e la proprietà Count
.
So che accettare un IEnumerable
come parametro ha senso, in quanto offre al consumatore la massima flessibilità per inviare dati al mio metodo, l'insieme minimalista di requisiti per il metodo da utilizzare.
Qual è la migliore pratica per il tipo di reso?