Re[3]: Разработка на чистом C
От: Pzz Россия https://github.com/alexpevzner
Дата: 31.10.16 10:06
Оценка: 4 (1) +1
Здравствуйте, Evgeny.Panasyuk, Вы писали:

Pzz>>Ну да, так и пишем, все руками. Полезность C++'ных автоматизмов сильно переоценена. В том смысле, что необходимость делать все явно добавляет, конечно, работы, но не так, чтобы очень много.


EP>Error-prone, легко забыть и трудно поддерживать.


Все эти C++'ные автоматизмы тоже error-prone. Особенно если учесть, как хорошо и неочевидно они могут быть запрятаны.

Pzz>>Обработка ошибок в виде явно возвращаемых кодов возврата — это не такой уж и плохой вариант. В отличии от исключений, все перед глазами и все легко читается, ошибка не прилетит неизвестно откуда и не улетит неизвестно куда.


EP>Error codes точно также летят наверх неизвестно куда.

EP>Хотя часто вообще не летят, ибо на них забивают — пример
Автор: MTD
Дата: 21.02.13
.


Там явно последовательность вызовов, которые вряд ли могут вернуть ошибку. Поэтому ребята притомились и перестали проверять

Для такого случая, как в том примере, есть еще один неплохой вариант. Пусть этот sAIMenu запоминает внутри себя, что очередное издевательство над ним вернуло ошибку, и игнорирует все последущие. Тогда можно смело совершенно написать 100500 действий в столбик, и проверить, нет ли там запомненной ошибки, в самом конце.

А еще можно, чем добавлять item'ы в меню сотней последовательных вызовов, сделать из них табличку и пройтись по ним циклом. Тогда ошибку придется проверять в одном месте внутри цикла, а не при каждом вызове, код станет короче, проще и более поддерживаемый.

В общем, все можно сделать аккуратно независимо от языка.

Pzz>>setjmp/longjmp для обработки ошибок очень мало подходят, это экзотические функции, которые бывают полезны в редких случаях.


EP>Их используют для эмуляции исключений.


И это не самый хороший подход.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.