История изменений
Исправление Kroz, (текущая версия) :
Заметь как минимум дублирование кода при ошибочном завершении (в третий раз он дублируется в конце функции).
Эмм... А при чем здесь вообще C/C++? То, что ты перечислил - логика программы, и от языка (C/C++) она не зависит. И на С и на С++ можно написать так, а можно по-другому.
дублирование кода
Кстати, как бы ты его изменил? Я вот придумал парочку вариантов, но они нетривиальны: 1) if с дикой конструкцией, 2) вывести нужное в блок, а обработку ошибки - в конец функции, но так страдает читаемость 3) запихнуть все в макрос - костыльно. 4) запихнуть нужное в деструктор каког-то объекта - сомнительный способ. Дальше не думал. Сам не люблю дублирующийся код, но иногда бывает нужно.
Про несколько точек возврата из функции даже не говорю...
И в чем проблема в нескольких точках возврата?
Да, по теме:
Почему на С++ пишут как на С?
Потому что цель - не чистота кода, а чтобы работало и было более-менее читабельно.
Исходная версия Kroz, :
Заметь как минимум дублирование кода при ошибочном завершении (в третий раз он дублируется в конце функции).
Эмм... А при чем здесь вообще C/C++? То, что ты перечислил - логика программы, и от языка (C/C++) она не зависит. И на С и на С++ можно написать так, а можно по-другому.
дублирование кода
Кстати, как бы ты его изменил? Я вот придумал парочку вариантов, но они нетривиальны: 1) if с дикой конструкцией, 2) вывести нужное в блок, а обработку ошибки - в конец функции, но так страдает читаемость 3) запихнуть все в макрос - костыльно. 4) запихнуть нужное в деструктор каког-то объекта - сомнительный способ. Дальше не думал. Сам не люблю дублирующийся код, но иногда бывает нужно.
Про несколько точек возврата из функции даже не говорю...
И в чем проблема в нескольких точках возврата?
Да, по теме: потому что цель - не чистота кода, а чтобы работало.