Exceptions
3/9/05 20:31Мысля об исключениях, в дополнение к этому.
Хотя исключения и создают "неявный goto из каждого места кода" (если быть точным - то return), но в том и идея, чтобы сделать их неявными. В корректном коде в этом самом каждом месте были бы if-ы для проверки кодов возврата, return-ы, и, возможно, ещё энное количество строчек - лог и пр.
То есть - исключения являются меньшим злом, и без них код был бы не лучше.
Проблема - научить(ся) писать так, чтобы код функции корректно завершался при выходе из любого места. Для этого нужны стражи ресурсов (см. RAII pattern)... и что ещё? Неужели это решает "проблему исключений"?
P.S. Вот это у Джоэля, кажется, надо перечитать со всеми упоминаемыми статьями.
P.P.S. Ещё сравнение RAII в C++, C# и Java. Java тут, увы, сильно подкачала :)
Хотя исключения и создают "неявный goto из каждого места кода" (если быть точным - то return), но в том и идея, чтобы сделать их неявными. В корректном коде в этом самом каждом месте были бы if-ы для проверки кодов возврата, return-ы, и, возможно, ещё энное количество строчек - лог и пр.
То есть - исключения являются меньшим злом, и без них код был бы не лучше.
Проблема - научить(ся) писать так, чтобы код функции корректно завершался при выходе из любого места. Для этого нужны стражи ресурсов (см. RAII pattern)... и что ещё? Неужели это решает "проблему исключений"?
P.S. Вот это у Джоэля, кажется, надо перечитать со всеми упоминаемыми статьями.
P.P.S. Ещё сравнение RAII в C++, C# и Java. Java тут, увы, сильно подкачала :)
Tags:
(no subject)
3/9/05 14:30 (UTC)Та да. Но я сталарся искать там глубинный смысл - всё-таки такой известный (по крайней мере, Джоэлю) дядька...
С Daily WTF знаком не был, спасибо :)
(no subject)
3/9/05 15:58 (UTC)Концепция локальной переменной в C++ тоже хороша, но очень уж страшно писать на плюсах: это как раз та красота, за которую надо платить. И если на Java я могу подчищать код за тремя-пятью девелоперами, то на плюсах я и за одним не рискну.
Проблемы исключений на самом деле нет (а то мы сейчас ещё придумаем проблемы break и contunue). Есть проблема освобождения ресурсов :) Насколько я могу судить, эти проблемы если и связаны, то уж точно не идентичны :)