Здравствуйте, Doc, Вы писали:
Doc>Здравствуйте, Poopy Joe, Вы писали:
PJ>>А if на каждый чих это не страшно? А контракты на каждый чих не то же самое?
Doc>Нет, не тоже самое. В случае контрактов Doc>*) Не надо писать код для SizeOfSomething + SizeOfSomething, SizeOfSomething + SizeOfSomething2 итд
Надо! Или нет гарантии, что радианы не будут складываться с градусами, а размер головы с размером ноги.
Doc>*) Приведение SizeOfSomething к другим "физическим" типам
Что значит приведение? Другая величина это другая величина. Типа каста к float? Так весь смысл в том, чтобы этого не требовалось.
Doc>*) If для проверки вам не удастся привязать к интерфейсам (будут или вызовы вручную класса проверки или копипаста в каждую реализацию)
Не понял. Какой if, какой проверки? Интерфейс с типом SizeOfSomething не требует дополнительных проверок.
Doc>*) Не всегда диапазон зависит от физической величины. Метод может вполне иметь свои ограничения.
И? Допустим метод принимает возраст и требует, чтобы он был больше 18 лет. Тогда параметр будет например Adult<Age>. Вызываемый метод гарантированно имеет правильные значения, а вызывающие метод просто физически не сможет послать неверные данные, об этом заботится компилятор. А чем тут помогут контракты? Выкинут исключения во времени исполнения? Очень "полезно".