ejemplos - expresiones de consulta linq
¿Cuál es el peor abuso que has visto de la sintaxis de LINQ? (4)
En un reciente podcast de Dot Net Rocks , Jon Skeet mencionó posibles abusos de la sintaxis de LINQ. ¿Qué ejemplos ha visto la gente donde se están haciendo cosas locas con LINQ?
Tiene que ser un ray-tracer implementado en una sola expresión LINQ . ¡Inteligente, hermoso y atemorizante todo al mismo tiempo!
Honestamente, tiene que haber casos en que las personas elijan la sintaxis de LINQ donde está el código para hacerlo:
- Fue el mismo o más largo que un simple bucle
- No se ofreció ninguna ventaja de rendimiento o corrección (legibilidad / mantenibilidad) en un bucle simple
Uno de los "mejores" que he visto es de thedailywtf.com
public string LastSixDigits
{
get
{
if (string.IsNullOrWhiteSpace(this.Number) || this.Number.Length < 6)
return string.Empty;
return this.Number.Reverse().Take(6).Reverse().Aggregate(string.Empty, (s, c) => s += c);
}
}
Aquí están mis propios abusos , solo por reírse de una noche geek, y demostrar lo que el compilador realmente hace con las expresiones de consulta.
Podría decirse que mi "LINQ to Mandelbrot" es un poco abusivo también :)
En particular, estaba pensando en el abuso de la sintaxis , pero siempre hay muchas maneras de abusar de la presencia de LINQ, haciendo las cosas "a la manera LINQ" cuando hay enfoques más simples disponibles sin usar LINQ. Por ejemplo, llegar al n
ésimo elemento de una matriz:
// Sensible (we know that people implements IList<Person>)
Person x = people[10];
// Insane
Person y = people.Skip(9).First();
Sospecho que habrá más casos de abuso como este que abusar del poder de las expresiones de consulta, en parte porque muchos desarrolladores no se darán cuenta de que el abuso de expresiones de consulta incluso funcionará :)