LINUX.ORG.RU

История изменений

Исправление Kroz, (текущая версия) :

Заметь как минимум дублирование кода при ошибочном завершении (в третий раз он дублируется в конце функции).

Эмм... А при чем здесь вообще C/C++? То, что ты перечислил - логика программы, и от языка (C/C++) она не зависит. И на С и на С++ можно написать так, а можно по-другому.

дублирование кода

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

Про несколько точек возврата из функции даже не говорю...

И в чем проблема в нескольких точках возврата?

Да, по теме:

Почему на С++ пишут как на С?

Потому что цель - не чистота кода, а чтобы работало и было более-менее читабельно.

Исходная версия Kroz, :

Заметь как минимум дублирование кода при ошибочном завершении (в третий раз он дублируется в конце функции).

Эмм... А при чем здесь вообще C/C++? То, что ты перечислил - логика программы, и от языка (C/C++) она не зависит. И на С и на С++ можно написать так, а можно по-другому.

дублирование кода

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

Про несколько точек возврата из функции даже не говорю...

И в чем проблема в нескольких точках возврата?

Да, по теме: потому что цель - не чистота кода, а чтобы работало.