В языке много бессмысленных ритуалов, например после каждой строчки нужно ставить ;. Обязательно. Вопрос зачем?
Еще один ритуал. При вызове функции обязательно нужно ставить (). Даже если функция не является мутатором. То есть выражение вида:
var allIds = result.SelectMany(x => x).Distinct().ToList();
Можно было бы переписать:
var allIds = result.SelectMany.Distinct.ToList
А если убрать обязательность var, то совсем здорово:
allIds = result.SelectMany.Distinct.ToList
Легко читается, да и пишется тоже. Есть еще один ритуал, которые все много раз делали:
public class Some
{
private int val1;
private int val2;
public Some(int val1, int val2)
{
this.val1 = val1;
this.val2 = val2;
}
}
Могло бы выглядеть как:
public class Some
{
public Some(int val1, int val2)
{
}
}
То есть наличие в конструкторе означает наличие у типа этих полей.
Что думаете? Есть ли основания у подобных претензий?