何年も前に、誰が最も難読化された C コードを生成できるかを競うコンテストが行われ、結果の一部は劇的に判読不能になりました。C.がそうだった。特にプリプロセッサを使用すると、本当に問題が発生する可能性があります。
ただし、C# の新しい機能の多くは、コードを難読化する素晴らしい機会を提供します。コードの簡潔さと明快さの適切なバランスを見つけることについて、誰か意見があるかどうか疑問に思っていました。議論のために一例を挙げましょうListView。(はい、データバインディングでできることは知っていますが、ここで私と一緒に行ってください。)
コントロールは、次の配列で満たされる 2 列です。
struct Person
{
    public string name;
    public string address;
};
1つの明確で簡単な方法は次のとおりです。
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);
    }
}
明確でわかりやすい。
次のように書くこともできます。
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);
    }
}
あるいは:
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 }));
    }
}
最後に、次のように書くこともできます。
private void Fill(Person[] people)
{
    Array.ForEach(people, item =>
    listView1.items.Add(new ListViewItem(
    new string[] { person.name, person.address}));
}
それぞれが多かれ少なかれ、言語のさまざまな新機能を使用しています。簡潔さと明快さのバランスをどのように見つけますか? 難読化された C# コンテストを毎年開催する必要がありますか?