Re[10]: Начать ли использовать Code Contracts?
От: Doc Россия http://andrey.moveax.ru
Дата: 13.08.15 17:14
Оценка:
Здравствуйте, Poopy Joe, Вы писали:

PJ>Т.е. вместо проверки валидности типа на этапе компиляции ты предлагаешь выполнять проверку в рантайме и наедятся на полноту и корректность тестов? Здорово, чо.


Ну если так параноить, то что помешает в LegHeight записать размер ноги?

Doc>>*) у вас класс Adult должен знать о Age, уметь извлекать из него значения. Лишний класс, лишние тесты, да еще и с жесткой связью.

PJ>Что значит лишний класс? У нас есть какие-то ограничения по количеству классов?

Ну да, чем больше классов тем проще жить? Даешь Hello World из 100500 классов Как там "wow: Здорово, чо."

PJ>>>А чем тут помогут контракты?

Doc>>Contract.Requires(18 < age);
PJ>Прелестно. А потом потребуется изменить возраст в зависимости от страны...

Сравнивай не с константой. Да и мне кажется что опять начинаешь мешать контракты и бизнес-логику.

PJ>>>Выкинут исключения во времени исполнения? Очень "полезно".

Doc>>А что сделает Adult<Age> если Age будет больше 18?
PJ>Вернет ошибку в момент создания, разумеется.

И как у нас конструктор вернет ошибку? Или мы еще и factory с возвратом ошибок замутим?

PJ>Исключения вообще не слишком уместны, так как прерывают логику в случайном месте, но это отдельный разговор.


Ну во первых не в случайном месте, а вполне в конкретном.
Далее, в метод, где не может быть возраст меньше заданного пролез такой возраст. Значит программа уже в не консистентном состоянии. Так что исключению тут самое место.
Ну и опять ты путаешь BL и контракты метода.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.