Здравствуйте, Sinix, Вы писали:
S>·>И чем это лучше чем банальный:
S>Как минимум тем, что отлавливает ещё и ActiveEditor == null.
Тогда лучше явная проверка на null. А в "view.ActiveEditor as ComboBoxEdit" непонятно — толи тупо null, толи тип не тот. Смешивается несмешиваемое.
S>Если серьёзно, то конкретно в этом примере смысла расставлять ассерты нет, проще код поправить. А вот подстелить соломку в местах, где закладываешься на текушее поведение, аля
S>S> protected override void RunCore(... List<Measurement> resultMeasurements)
S> {
S> DebugCode.BugIf(resultMeasurements.Count>0, "resultMeasurements not empty.");
S> DebugCode.BugIf(resultMeasurements.Capacity < iterationCount, "resultMeasurements capacity not set.");
S>
S>иногда спасает. Буквально вчера этот ассерт словил баг с передачей не того списка в метод.
А просто
if(resultMeasurements.Count>0) thrown Exception("resultMeasurements not empty.") чем хуже?
S>·>Фи. Или падаем, но не сразу — если combo используется где-то в другом участе кода чуть позже — счастливой отладки.
S>Ну а что мешает оставить ассерт и для релизных сборок? Я ж не зря написал условие, когда достаточно только отладочного ассерта:
Если оставлять ассерт для релизных сборок — зачем тогда ассерт, а не простой код?
S>S>код из нагруженного участка, покрыт тестами, ошибки быть в принципе не может, для подстраховки — вот тебе ассерт
Если "ошибки быть в принципе не может" — тогда и проверка не нужна. А раз страхуешься, значит неверно что "ошибки быть в принципе не может". Ты уж определись.
S>·>ассерты фтопку.
S>А аргументы какие-нить будут, кроме как "мне не нравится"? А то типовая ситуация с проектами "ассерты не нужны" выглядит вот так: тесты зелёные, CI настроен, покрытие норм, форкаем, ставим ассерты — и оппа баг раз, оппа баг два, упс — недоработка три и тыды и тыпы.
Ассерты говорят от дыре в дизайне, которая не позволяет написать простой юнит-тест для того же условия.
S>Причём сам код — отличный и с сценариями авторов проблем нет вообще. Проблема с непредусмотренными сценариями. Для них тестов нет, проверок нет и распутывание ошибок превращается в натуральный квест типа такого.
Ну раз ассерт догадались написать, значит и ютест можно было написать.
S>Ассерты подобные косяки ловят на раз-два, т.к. они работают всегда, а не проверяются только в одном тесте из нескольких тысяч.
Если ассерты работают всегда, то почему это ассерты? Под ассертами подразумевается код отключаемый в релизе. А если их не отключают — то значит они используются не по назначению.