programacion practicas para notacion nomenclatura hungara estándares estandares documentar codigo codificacion buenas c# naming-conventions

c# - practicas - estándares de nomenclatura



Convenciones de nomenclatura del método C#: ToSomething vs. AsSomething (2)

Mientras escribía algunos métodos de extensión para mis objetos de lógica de negocios, llegué a la cuestión de cambiar el nombre de los métodos de conversión. someObject.ToAnotherObject() iría bien con el object.ToString() ampliamente utilizado.ToString object.ToString() .

Sin embargo, LINQ, por ejemplo, mezcla ambas variantes y no puedo encontrar una diferencia entre ellas. ToDictionary() , ToList() , AsParallel() , AsQueryable() , ...

¿Cuáles son las diferencias entre estas dos convenciones de nombres y qué debo saber para decidir si usarlas para mis propias clases?


En Linq, todos los métodos ToXXX ejecutan la consulta y crean un nuevo objeto a partir de los resultados, mientras que los métodos AsXXX producen una nueva consulta que es diferente de alguna manera. Puede ser el mismo objeto pero se accede a él a través de una interfaz diferente ( AsEnumerable() hace esto) o puede ser un nuevo objeto que altera la funcionalidad (los otros métodos hacen esto, aunque algunos verifican si pueden devolver el objeto dado , por ejemplo, AsQueryable() devolverá el source si ya implementa IQueryable<T> , o si crea un nuevo EnumerableQuery<TElement> contrario).


ToDictionary y ToList tienen el prefijo To porque no necesariamente conservan la identidad estructural de la colección original o sus propiedades.

  • Transformar una List<T> en un Dictionary<K, V> crea una colección con una estructura completamente nueva.
  • Transformar un HashSet<T> en una List<T> elimina la propiedad de unicidad de los conjuntos.

Los métodos con el prefijo As no hacen ninguna de estas cosas: simplemente proporcionan una vista alternativa de la colección original. Ellos lo enriquecen.