magog
12.09.2011 09:49 Azoth
Всегда думал, что надежный код — это тот код, который работает при любых условях. Срет варнингами, еррорами в лог, но при этом продолжает работать. На днях мне прислали правки к проекту. Там все мои:
if (hash.contains (id))
hash[id]→do_something ()
Были заменены на
Q_ASSERT (hash.contains (id));
hash[id]→do_something ()
Теперь вот сижу и не понимаю — то ли я идиот, то ли я чего-то не знал.
Оптимизируют. А вообще я за твой вариант
Имхо если в программе возникла ошибка, которую нельзя обработать/откатить, то она должна падать. Иначе результатам её работы после этого нельзя будет доверять.
В программе Delta в случае таких ошибок выдавалось окошко с "Казуальная ошибка". Я считаю, что программа должна быть написана так, что бы не падать. ни в каких условиях и ни при каких обстоятельствах.
Такой ошибки не должно быть вообще. Если она появилась — то все "имхо"
Тут обсуждать нехуя. Тут здравый смысл нужен.
Надежный код не допускает несогласованных состояний (различного рода утечки, нарушения логики и т.п.). Завершение программы в случае критической ошибки — это надежный код. В случае некритической — лень программиста.
Конечно идиот, в релизе ассерты раскрываются в те же ифы.
только на ифах код не падает, а на ассертах падает
в дебаге он и должен падать
"Программа должна падать сразу и с как можно большим шумом" — практически классика.
ШТО.
Q_ASSERT() is useful for testing pre- and post-conditions during development. It does nothing if QT_NO_DEBUG was defined during compilation.
Да и даже C-шный
This macro is disabled if at the moment of including assert.h a macro with the name NDEBUG has already been defined. This allows for a coder to include many assert calls in a source code while debugging the program and then disable all of them for the production version by simply including a line like:
#define NDEBUG at the beginning of its code, before the inclusion of assert.h.
Пиздишь, лошара.
Ну кто тебе доктор что ты так плохо юзаешь ассерты без ифов.
Да ты еще и попиздун, BL.
>>ассерты раскрываются в те же ифы
А ты чего забулькал, я ж у тебя в игнорлисте?
Всё верно, раскрываются.
>>в релизе ассерты раскрываются в те же ифы
>>в релизе
NO WAI
ты дебил? Ну если несешь хуйню, так хоть не пались так. Я в оппосте четко написал что на что было заменено. Бля. Вот таких идиотов редко встретишь на псто.
потому я говорю что ты не умеешь их готовить
ты просто идиот
В оп какая-то фигня с хешами, я хз что там у тебя внутрях, но в целом они правильно твой код исправили вроде. А идиотов на псто пруд-пруди, больных буздом, ооп и прочими шаблонами, скучно в общем.
не просто, а гораздо более умный идиот чем ты
идиот с манией величия
Очень приятно.
Хорошо что я ею в отличии от тебя не страдаю, и могу спокойно признать что я идиот (увы, возможности мясного разума весьма ограничены), хоть и более интеллектуально образованый.