C# 6
От: VladCore  
Дата: 30.08.14 15:53
Оценка:
Вместо PHP синтиакисиса лучше бы добавили нормальные прекондишн аргументов


[PreCondition(i1 => i1 > 0)]
[NotNullArgument(i2)]
public void MyMethod(int i1, string i2)
{
 .......
}


или так:
[i1 => i1 > 0]
[i2 is not null]
public void MyMethod(int i1, string i2)
{
 .......
}

["At least two pieces are required": list => list != null && list.Count >=2]
[s2 is any]
public void MyMethod(MyCollection list, string s2)
{
 .......
}



1. В месседж ArgumentException должен вклеиваться исходник лямбды, если в прекондишн нет кастомного сообщения типа At least two pieces are required

2. И по формальному "аргументу" лямбды компилятор должен понимать к какому аргументу метода относится констрейнт

3. Компилятор должен выдавать ошибку, если нет прекондишн или [s2 is any] для тех методов которые помечены Strict на уровне класса или сборки.


Практически во всех невоспроизводимых багах, c которыми я сталкивался, нехватало проверки аргументов.
Отредактировано 30.08.2014 16:02 VladCore . Предыдущая версия . Еще …
Отредактировано 30.08.2014 15:59 VladCore . Предыдущая версия .
Отредактировано 30.08.2014 15:55 VladCore . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.