magog 12.09.2011 09:49 Azoth

Всегда думал, что надежный код — это тот код, который работает при любых условях. Срет варнингами, еррорами в лог, но при этом продолжает работать. На днях мне прислали правки к проекту. Там все мои:
if (hash.contains (id))
hash[id]→do_something ()
Были заменены на
Q_ASSERT (hash.contains (id));
hash[id]→do_something ()

Теперь вот сижу и не понимаю — то ли я идиот, то ли я чего-то не знал.

1. werehuman 12.09.2011 09:53

Оптимизируют. А вообще я за твой вариант

2. BillyIII 12.09.2011 09:56

Имхо если в программе возникла ошибка, которую нельзя обработать/откатить, то она должна падать. Иначе результатам её работы после этого нельзя будет доверять.

3. magogBillyIII /2 12.09.2011 10:00 Azoth

В программе Delta в случае таких ошибок выдавалось окошко с "Казуальная ошибка". Я считаю, что программа должна быть написана так, что бы не падать. ни в каких условиях и ни при каких обстоятельствах.

4. werehumanBillyIII /2 12.09.2011 10:00

Такой ошибки не должно быть вообще. Если она появилась — то все "имхо"

5. komar 12.09.2011 10:17 pavilion

Тут обсуждать нехуя. Тут здравый смысл нужен.

6. DZhon 12.09.2011 10:34

Надежный код не допускает несогласованных состояний (различного рода утечки, нарушения логики и т.п.). Завершение программы в случае критической ошибки — это надежный код. В случае некритической — лень программиста.

7. dorfe 12.09.2011 14:37

Конечно идиот, в релизе ассерты раскрываются в те же ифы.

8. magogdorfe /7 12.09.2011 14:38 Azoth

только на ифах код не падает, а на ассертах падает

9. dorfemagog /8 12.09.2011 14:43

в дебаге он и должен падать

10. octocatmagog /3 13.09.2011 19:49 emacs4D801560

"Программа должна падать сразу и с как можно большим шумом" — практически классика.

11. DZhondorfe /7 13.09.2011 19:51

ШТО.

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.

12. 0xd34df00ddorfe /7 13.09.2011 19:55 Azoth_primary

Пиздишь, лошара.

13. dorfeDZhon /11 13.09.2011 22:15

Ну кто тебе доктор что ты так плохо юзаешь ассерты без ифов.

14. DZhondorfe /13 13.09.2011 22:16

Да ты еще и попиздун, BL.
>>ассерты раскрываются в те же ифы

15. dorfe0xd34df00d /12 13.09.2011 22:16

А ты чего забулькал, я ж у тебя в игнорлисте?

16. dorfeDZhon /14 13.09.2011 22:18

Всё верно, раскрываются.

17. DZhondorfe /16 13.09.2011 22:25

>>в релизе ассерты раскрываются в те же ифы
>>в релизе

NO WAI

18. magogdorfe /16 14.09.2011 03:47 Azoth

ты дебил? Ну если несешь хуйню, так хоть не пались так. Я в оппосте четко написал что на что было заменено. Бля. Вот таких идиотов редко встретишь на псто.

19. dorfeDZhon /17 14.09.2011 14:41

потому я говорю что ты не умеешь их готовить

20. magogdorfe /19 14.09.2011 14:43 Azoth

ты просто идиот

21. dorfemagog /18 14.09.2011 14:45

В оп какая-то фигня с хешами, я хз что там у тебя внутрях, но в целом они правильно твой код исправили вроде. А идиотов на псто пруд-пруди, больных буздом, ооп и прочими шаблонами, скучно в общем.

22. dorfemagog /20 14.09.2011 14:46

не просто, а гораздо более умный идиот чем ты

23. magogdorfe /22 14.09.2011 14:46 Azoth

идиот с манией величия

24. dorfemagog /23 14.09.2011 14:50

Очень приятно.
Хорошо что я ею в отличии от тебя не страдаю, и могу спокойно признать что я идиот (увы, возможности мясного разума весьма ограничены), хоть и более интеллектуально образованый.

Do you really want to delete ?