Supongamos que tengo un método
public List<User> GetBatchOfUsers(IEnumerable<int> userIDs)
{
List<User> users = new List<User>();
// some database stuff
return users;
}
He leído que sería mejor devolver una interfaz (ya sea IListo IEnumerable) en lugar de devolver a List. Algunos de los argumentos que escuché al respecto es que oculta datos y le da al desarrollador de API la flexibilidad de cambiar la representación interna de los datos en una fecha posterior.
Mi preocupación acerca de solo devolver un IEnumerablees que pierdes funcionalidad, como el acceso aleatorio y la Countpropiedad.
Sé que aceptar un IEnumerableparámetro tiene sentido, ya que le da al consumidor la mejor flexibilidad para enviar datos a mi método, el conjunto minimalista de requisitos para que el método funcione.
¿Cuál es la mejor práctica para el tipo de devolución?