Здравствуйте, ·, Вы писали:
·>Да нет жеж. Пиши, проверяй, ломай, но без ассертов. Заменяй ассерты чем-то другим. Почему ты считаешь их незаменимыми? Используй другие инструменты.
Дык какие же? Помимо юнит-тестов в смысле. Логгер — не вариант, очевидно. Кто за его выхлопом следить-то будет?
S>>Комбинацией из ассертов + интеграционными тестами такие вещи ловятся на раз-два. Кто ленится — получает вотАвтор: DreamMaker
Дата: 28.08.16
этоАвтор: Pavel_Agurov
Дата: 12.01.15
в подарок.
·>В проде он ничего не получит, получит unspecified behaviour, т.к. по определению в проде ассерты отключаются.
Ну, это догматизм ненужный. Если разработчик решает отключить ассерты в продакшне (не выборочно, только тяжёлые, а вообще все) — то обвинять надо точно не ассерты.
·>А в дебаге он получит что-то лишь в том случае, если _догадается_ написать ассерт. А раз догадался написать ассерт — почему не написал тест?
Потому что далеко не всегда получается придумать способ нарушить ассерт на текущем коде, иногда это в принципе невозможно. "Что-то может пойти не так" постфактум. Я давал уже кучу примеров — и с локалью, которая появилась после написания кода, и с багом с "потерянным" часом в новом году, и с "неожиданной" обработкой путей с точкой в конце.
Как-ещё по вашему можно защищаться от подобных ошибок?