Re[4]: Совсем отстой?
От: · Великобритания  
Дата: 10.11.16 13:13
Оценка:
Здравствуйте, 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>Ассерты подобные косяки ловят на раз-два, т.к. они работают всегда, а не проверяются только в одном тесте из нескольких тысяч.

Если ассерты работают всегда, то почему это ассерты? Под ассертами подразумевается код отключаемый в релизе. А если их не отключают — то значит они используются не по назначению.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.