tag:blogger.com,1999:blog-3179964835593137794.post2806282659559929694..comments2022-04-09T14:53:02.942+03:00Comments on Распутывая нити: Использование исключенийAndrey Valyaevhttp://www.blogger.com/profile/05020625213099509709noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-3179964835593137794.post-62203749679218469332012-08-30T13:43:04.185+04:002012-08-30T13:43:04.185+04:00Исключения - это довольно тяжелая штука, даже когд...Исключения - это довольно тяжелая штука, даже когда исключительных ситуаций нет (прологи/эпилоги функций). В одной конторе писали С++ проект (3d движок), где было много небольших функций-членов класса. После запрета на использование исключений размер кода значительно уменьшился, плюс к этому заметно увеличилась общая производительность.<br /><br />Исключения необходимы в том случае, когда в конструкторе надо завершить создание объекта с ошибкой. Но это тоже обходится достаточно просто через простой конструктор-инициализатор + create/init метод.<br /><br />Тоже самое и с шаблонами. Шаблоны, без сомнения, исключительно мощная и полезная возможность. Мне их очень не хватает, когда я пишу на С. Однако широкое использование шаблонов вызывает создание каждый раз нового класса с набором методов, что вызывает рост объема кода, забивает кэш, в общем, те же проблемы, что и при бездумном использовании inline/__force_inline.<br /><br />С++ - это настолько мощный язык, что человек может очень легко выстрелить себе в ногу, совершенно спокойно написав крайне неэффективный код, который выглядеть будет красиво.Mikehttps://www.blogger.com/profile/07050093735570667334noreply@blogger.comtag:blogger.com,1999:blog-3179964835593137794.post-2555555613174329322011-08-13T20:46:13.315+04:002011-08-13T20:46:13.315+04:00Исключения в C++ -- это too big gun. Не такой боль...Исключения в C++ -- это too big gun. Не такой большой, конечно, как шаблоны, но все-таки. Поэтому поначалу от предоставляемых исключениями возможностей крышу сносит и их пробуешь засовывать направо и налево, пока сам не нахлебаешься и не начнешь прислушиваться к здравому смыслу. Так что, если у разработчика голова на плечах есть, то с опытом и нормальное использование исключений приходит.<br /><br />По поводу style guide-ов, в которых намеренно запрещают использовать исключения -- тут нужно смотреть на две вещи. Во-первых, на возраст самих guide-ов. Возможно, их писали еще когда поддержка исключений в ряде компиляторов оставляла желать лучшего. Во-вторых, в каких условиях идет разработка. Если в компании работают сотни C++ников, то имеет смысл сильно ограничить им рамки дозволенного (исключения, шаблоны, STL- и Boost-стиль). Это разумно, т.к. слабых программистов в таких командах явно больше и им не дают лишних возможностей наломать дров.<br /><br />С другой стороны, сейчас все равно все это выглядит диковато. C++ -- это содержащий огромное количество возможностей язык. Поэтому неправильно запрещать пользоваться наиболее мощными из них.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-3179964835593137794.post-86138501034629993172011-08-12T11:47:34.898+04:002011-08-12T11:47:34.898+04:00airmax: Это какие? Имхо, если есть g++, то и исклю...airmax: Это какие? Имхо, если есть g++, то и исключения тоже есть.<br /><br />Potapov Anton: Мог бы и перевести. копипастить мы все умеем... <br /><br />Насколько я понимаю, в Google тоже считают, что исключения - это хорошо.<br /><br />Но поскольку раньше они их не ценили, то сейчас испытывают проблемы при использовании исключений в новых проектах. :)Andrey Valyaevhttps://www.blogger.com/profile/05020625213099509709noreply@blogger.comtag:blogger.com,1999:blog-3179964835593137794.post-13487654051315913392011-08-12T10:25:41.735+04:002011-08-12T10:25:41.735+04:00Отсюда:
https://google-styleguide.googlecode.com/...Отсюда: <br />https://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Exceptions<br /><br />"On their face, the benefits of using exceptions outweigh the costs, especially in new projects. However, for existing code, the introduction of exceptions has implications on all dependent code. If exceptions can be propagated beyond a new project, it also becomes problematic to integrate the new project into existing exception-free code. Because most existing C++ code at Google is not prepared to deal with exceptions, it is comparatively difficult to adopt new code that generates exceptions. "Potapov Antonhttps://www.blogger.com/profile/01004887556593514985noreply@blogger.comtag:blogger.com,1999:blog-3179964835593137794.post-81252315018967843332011-08-12T09:58:10.146+04:002011-08-12T09:58:10.146+04:00Суть в том что не все платформы поддерживают исклю...Суть в том что не все платформы поддерживают исключения (embedded например).<br />Я тоже считаю что исключения это хорошо.airmaxhttps://www.blogger.com/profile/12316641690207779825noreply@blogger.comtag:blogger.com,1999:blog-3179964835593137794.post-78282656361026935962011-08-12T01:27:42.004+04:002011-08-12T01:27:42.004+04:00Погодите, погодите...
А какая проблема с исключен...Погодите, погодите...<br /><br />А какая проблема с исключениями в плане переносимости? Помоему они стандартные. Везде, где есть c++, исключения работают так, как положено.<br /><br />Единственное, что написано в ихнем стиле - есть проблемы при использовании кода с иключениями в exception-free проектах. Дык это и так всем понятно.<br /><br />ИМХО исключения - это хорошо. Но злоупотребить можно чем угодно.Andrey Valyaevhttps://www.blogger.com/profile/05020625213099509709noreply@blogger.comtag:blogger.com,1999:blog-3179964835593137794.post-51671195003069293742011-08-11T20:34:52.254+04:002011-08-11T20:34:52.254+04:00Насколько я помню, гугл отказался от исключений в ...Насколько я помню, гугл отказался от исключений в пользу лучшей переносимости кода.airmaxhttps://www.blogger.com/profile/12316641690207779825noreply@blogger.comtag:blogger.com,1999:blog-3179964835593137794.post-59082189212564825572011-08-09T00:34:29.598+04:002011-08-09T00:34:29.598+04:00Все программисты разные... и не все имеют за плеча...Все программисты разные... и не все имеют за плечами 20летний опыт, как я например :)<br /><br />Молодеж может этого не осознавать. И поэтому, чтобы не отравлять жизнь остальным, лучше запретить.<br /><br />Опытный человек, я уверен, так же спокойно будет работать и вовсе без исключений.Andrey Valyaevhttps://www.blogger.com/profile/05020625213099509709noreply@blogger.comtag:blogger.com,1999:blog-3179964835593137794.post-17433763377501851162011-08-06T23:34:01.677+04:002011-08-06T23:34:01.677+04:00Скажем так: тот факт, что гуглеры не способны поня...Скажем так: тот факт, что гуглеры не способны понять, что исключения потому и исключения, что используются в исключительных местах, вызывает большие сомнения, что они такие уж умные.Tierhttps://www.blogger.com/profile/10890680478138066791noreply@blogger.com