singalen: (Default)
[personal profile] singalen
Мысля об исключениях, в дополнение к этому.
Хотя исключения и создают "неявный goto из каждого места кода" (если быть точным - то return), но в том и идея, чтобы сделать их неявными. В корректном коде в этом самом каждом месте были бы if-ы для проверки кодов возврата, return-ы, и, возможно, ещё энное количество строчек - лог и пр.
То есть - исключения являются меньшим злом, и без них код был бы не лучше.
Проблема - научить(ся) писать так, чтобы код функции корректно завершался при выходе из любого места. Для этого нужны стражи ресурсов (см. RAII pattern)... и что ещё? Неужели это решает "проблему исключений"?

P.S. Вот это у Джоэля, кажется, надо перечитать со всеми упоминаемыми статьями.
P.P.S. Ещё сравнение RAII в C++, C# и Java. Java тут, увы, сильно подкачала :)

(no subject)

3/9/05 12:12 (UTC)
Posted by [identity profile] alf-kadett.livejournal.com
А последние примеры - это пример неиспользования принципа DRY. Их можно сходу постить в Daily WTF.

(no subject)

3/9/05 15:58 (UTC)
Posted by [identity profile] alf-kadett.livejournal.com
Глубинный смысл есть: конструкция using действительно красива, не спорю.

Концепция локальной переменной в C++ тоже хороша, но очень уж страшно писать на плюсах: это как раз та красота, за которую надо платить. И если на Java я могу подчищать код за тремя-пятью девелоперами, то на плюсах я и за одним не рискну.

Проблемы исключений на самом деле нет (а то мы сейчас ещё придумаем проблемы break и contunue). Есть проблема освобождения ресурсов :) Насколько я могу судить, эти проблемы если и связаны, то уж точно не идентичны :)