Hace años solían ser un concurso para ver quién podía producir el código C más ofuscado, y algunos de los resultados eran increíblemente ilegibles. C era así. Realmente podrías arruinar las cosas con el preprocesador en particular.Código de C# ofuscado
Sin embargo, muchas de las características más nuevas de C# ofrecen una oportunidad increíble para ofuscar el código. Me preguntaba si alguien tenía una opinión sobre cómo encontrar el equilibrio correcto entre concisión y claridad en el código. Permítanme ofrecer un ejemplo para la discusión, la tarea de llenar elementos en un ListView. (Sí sé que puedes hacerlo con el enlace de datos, pero vaya conmigo aquí.)
El control es de dos columnas para ser llenado con una serie de persona struct { nombre de la cadena pública; dirección de cadena pública; };
Una forma, clara y sencilla es la siguiente:
private void Fill(Person[] people)
{
foreach(Person person in people)
{
string[] columns = new string[2];
columns[0] = person.name;
columns[1] = person.address;
ListViewItem item = new ListViewItem(columns);
listView1.items.Add(item);
}
}
clara y fácil de entender.
También podría escribir así:
private void Fill(Person[] people)
{
foreach(Person person in people)
{
string[] columns = new string[] { person.name, person.address };
ListViewItem item = new ListViewItem(columns);
listView1.items.Add(item);
}
}
o incluso:
private void Fill(Person[] people)
{
foreach(var person in people) // Note use implicit typing here
{
listView1.items.Add(new ListViewItem(
new string[] { person.name, person.address }));
}
}
Por último, también podría escribir así:
private void Fill(Person[] people)
{
Array.ForEach(people, item =>
listView1.items.Add(new ListViewItem(
new string[] { person.name, person.address}));
}
Cada uno utiliza algunos de los nuevos características del lenguaje en mayor o menor medida. ¿Cómo se encuentra el equilibrio entre la concisión y la claridad? ¿Deberíamos tener un concurso anual C ofuscado?
No, pero si quieres tener un concurso de perl ofuscado, puede ser divertido. –
y las etiquetas de "mejores prácticas" de "programación funcional" son para? –
lo siento, no puedo ver ninguna ofuscación en eso, tal vez estoy demasiado acostumbrado al lenguaje – flq