Сообщение Re[9]: Начать ли использовать Code Contracts? от 13.08.2015 12:05
Изменено 13.08.2015 12:37 Poopy Joe
Здравствуйте, DarkEld3r, Вы писали:
DE>Здравствуйте, Poopy Joe, Вы писали:
PJ>>И? Допустим метод принимает возраст и требует, чтобы он был больше 18 лет. Тогда параметр будет например Adult<Age>. Вызываемый метод гарантированно имеет правильные значения, а вызывающие метод просто физически не сможет послать неверные данные, об этом заботится компилятор. А чем тут помогут контракты? Выкинут исключения во времени исполнения? Очень "полезно".
DE>Дык, Adult<Age> где-то будет из обычного Age получаться? В итоге всё равно без рантайм проверок не обойтись.
Одна в любом случае необходимая проверка в момент создания типа, против множества проверок в разных местах.
Будучи созданным один раз этот тип остается валидным на протяжении всей жизни объекта.
DE>Здравствуйте, Poopy Joe, Вы писали:
PJ>>И? Допустим метод принимает возраст и требует, чтобы он был больше 18 лет. Тогда параметр будет например Adult<Age>. Вызываемый метод гарантированно имеет правильные значения, а вызывающие метод просто физически не сможет послать неверные данные, об этом заботится компилятор. А чем тут помогут контракты? Выкинут исключения во времени исполнения? Очень "полезно".
DE>Дык, Adult<Age> где-то будет из обычного Age получаться? В итоге всё равно без рантайм проверок не обойтись.
Одна в любом случае необходимая проверка в момент создания типа, против множества проверок в разных местах.
Будучи созданным один раз этот тип остается валидным на протяжении всей жизни объекта.
...
var adults = ages.Where(a => a.IsAdult(legalAdultAge)).Select(a => new Adult(a));
var x = adults.Map(Func1)); // Зачем в Func1 может понадобится контракт?
...
Re[9]: Начать ли использовать Code Contracts?
Здравствуйте, DarkEld3r, Вы писали:
DE>Здравствуйте, Poopy Joe, Вы писали:
PJ>>И? Допустим метод принимает возраст и требует, чтобы он был больше 18 лет. Тогда параметр будет например Adult<Age>. Вызываемый метод гарантированно имеет правильные значения, а вызывающие метод просто физически не сможет послать неверные данные, об этом заботится компилятор. А чем тут помогут контракты? Выкинут исключения во времени исполнения? Очень "полезно".
DE>Дык, Adult<Age> где-то будет из обычного Age получаться? В итоге всё равно без рантайм проверок не обойтись.
Одна в любом случае необходимая проверка в момент создания типа, против множества проверок в разных местах.
Будучи созданным один раз этот тип остается валидным на протяжении всей жизни объекта.
DE>Здравствуйте, Poopy Joe, Вы писали:
PJ>>И? Допустим метод принимает возраст и требует, чтобы он был больше 18 лет. Тогда параметр будет например Adult<Age>. Вызываемый метод гарантированно имеет правильные значения, а вызывающие метод просто физически не сможет послать неверные данные, об этом заботится компилятор. А чем тут помогут контракты? Выкинут исключения во времени исполнения? Очень "полезно".
DE>Дык, Adult<Age> где-то будет из обычного Age получаться? В итоге всё равно без рантайм проверок не обойтись.
Одна в любом случае необходимая проверка в момент создания типа, против множества проверок в разных местах.
Будучи созданным один раз этот тип остается валидным на протяжении всей жизни объекта.
...
var adults = ages.Where(IsLegalAdultAge).Select(a => new Adult(a));
var x = adults.Map(Func1)); // Зачем в Func1 может понадобится контракт?
...