"C++ Style Guide (http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml)" - руководство по стилю оформления C++ кода, используемое внутри Google.URL: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml
Новость: http://www.opennet.me/opennews/art.shtml?num=16730
Хехе, выложили таки :)
Приятно написано и самое главное указаны как +, так и - того или иного выбора. Google молодцы. Кто-то должен наводить порядок в хаосе :)
Исключения запрещены к использованию, соответственно нельзя делать инициализацию в конструкторах - в топку такой style guide!
>Исключения запрещены к использованию, соответственно нельзя делать инициализацию в конструкторах - в
>топку такой style guide!Вообще-то new тоже исключение кидает, если память выделить не может :-) Так что без базовой обработки исключений не обойтись, тогда придется запрещать какими бы то ни было стандартными функциями пользоваться.
Я так понимаю - тут просто написано, что использование собственных обработок построенных на throw-catch использовать нельзя.
Запрещено использование exception, в топку однозначно.
>Запрещено использование exception, в топку однозначно.А я только за запрет использования. Код вообще неперевариваймых с этими exception'ами.
Особенно меня в свое время выбило - когда я нашел что boost::thread внутри себя использует молчаливый catch(...) и поток тупо закрывается. Вот и получалось, что какая то ерундистика кидала этот самый exception - а он перехватывался в boost::thread и поток завершался. В результате получалась несуразица - процесс работает, но часть функционнальности как будто заблокировалась.
Вот вам и throw-catch. Один гемор с ними.
тут кто-то возмущается, что exceptions в style guide запрещены -
но это так не только в Google, аналогичные правила и в Mozilla:http://developer.mozilla.org/en/docs/C++_Portability_Guide#D...
а если так хочется exceptions - используйте Windows, Internet Explorer и www.live.com
не знаю..
думаю на прикладном уровне их использование вполне возможно.
а вот для google.. представьте, если их сервисы упадут из-за утечки памяти хотя бы на 5 минут.. вот радости для livesearch будет!
> а вот для google.. представьте, если их сервисы упадут из-за утечки памяти
> хотя бы на 5 минут.. вот радости для livesearch будет!шутишь? у google когда-то один из датацентров сгорел -
пользователи этого даже и не заметили, их запросы были прозрачно
перенаправлены на другие, оставшиеся в живых гугловские датацентры.
ну и представь, что на других датацентрах стоит тотже код, с теми же глюками!
помнишь веерное отключение электроэнергии в Москве? :-)
какие уж шутки!
по этому лучше уж административно запретить exception.
Не знаю как с exception в Windows, но в gcc все нормально. Да ретрограды сидят и в Mozilla, там общее правило вообще ничего не использовать из c++ если возможно. И утечки памяти и прочии ошибки от исключений не зависят совершенно. Подобные правила только гемора программистам добавляют.
Ну они ж там ясно все сказали:Given that Google's existing code is not exception-tolerant, the costs of using exceptions are somewhat greater than the costs in in a new project. The conversion process would be slow and error-prone. We don't believe that the available alternatives to exceptions, such as error codes and assertions, introduce a significant burden.
Our advice against using exceptions is not predicated on philosophical or moral grounds, but practical ones. Because we'd like to use our open-source projects at Google and it's difficult to do so if those projects use exceptions, we need to advise against exceptions in Google open-source projects as well. Things would probably be different if we had to do it all over again from scratch.
То есть они в принципе за, но их текущий код с исключениями не совместим, а переписывать - слишком большой геморрой, и если бы они делали заново - было бы по-другому.