Re[3]: Совсем отстой?
От: Sinix  
Дата: 10.11.16 12:47
Оценка:
Здравствуйте, ·, Вы писали:

·>И чем это лучше чем банальный:

Как минимум тем, что отлавливает ещё и ActiveEditor == null.

Если серьёзно, то конкретно в этом примере смысла расставлять ассерты нет, проще код поправить. А вот подстелить соломку в местах, где закладываешься на текушее поведение, аля
        protected override void RunCore(... List<Measurement> resultMeasurements)
        {
            DebugCode.BugIf(resultMeasurements.Count>0, "resultMeasurements not empty.");
            DebugCode.BugIf(resultMeasurements.Capacity < iterationCount, "resultMeasurements capacity not set.");

иногда спасает. Буквально вчера этот ассерт словил баг с передачей не того списка в метод.

S>>Т.е. для отладочного кода — падаем с понятным сообщением, для релиза — никаких проверок и (скорее всего) падаем с NRE.

·>Фи. Или падаем, но не сразу — если combo используется где-то в другом участе кода чуть позже — счастливой отладки.
Ну а что мешает оставить ассерт и для релизных сборок? Я ж не зря написал условие, когда достаточно только отладочного ассерта:

код из нагруженного участка, покрыт тестами, ошибки быть в принципе не может, для подстраховки — вот тебе ассерт


·>ассерты фтопку.

А аргументы какие-нить будут, кроме как "мне не нравится"? А то типовая ситуация с проектами "ассерты не нужны" выглядит вот так: тесты зелёные, CI настроен, покрытие норм, форкаем, ставим ассерты — и оппа баг раз, оппа баг два, упс — недоработка три и тыды и тыпы.

Причём сам код — отличный и с сценариями авторов проблем нет вообще. Проблема с непредусмотренными сценариями. Для них тестов нет, проверок нет и распутывание ошибок превращается в натуральный квест типа такого.

Ассерты подобные косяки ловят на раз-два, т.к. они работают всегда, а не проверяются только в одном тесте из нескольких тысяч.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.