多年前,他们曾经是一场比赛,看谁能制作出最混淆的C代码,而且有些结果显然难以理解.C就是这样.特别是你可能真的搞砸了预处理器.
但是,C#的许多新功能提供了一个混淆代码的绝佳机会.我想知道是否有人对在代码中的简洁和清晰度之间找到正确的平衡有意见.让我举一个讨论的例子,即将项目填充到ListView中的任务.(是的,我知道你可以用数据绑定来做,但请跟我一起去.)
控件是两列,用一个struct Person {public string name; 公共字符串地址; };
一个清晰简单的方法是:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
清晰易懂.
我也可以这样写:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
甚至:
private void Fill(Person[] people)
{
foreach(var person in people) // Note …Run Code Online (Sandbox Code Playgroud) readability ×1