![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
особенно весело бывает когда раскрываешь несколько namespace`ов, к примеру std, boost, boost::asio, boost::asio::ip::tcp. вот тогда-то и начинается все веселье
Это сообщение отредактировал(а) boostcoder - 9.10.2010, 14:17 |
|||
|
||||
| Master01 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 22.8.2007 Репутация: 2 Всего: 2 |
я всегда пишу в заголовке using std::something. или если тип внутри класса юзается определяю новое имя через typedef typedef std::Something _tSomething; и дальше в коде использую Something. Мне кажется в коде каждый раз писать namespace name тоже не очень кашерно. Для std::cout ещё ничего смотрится, но если там вложенные namespace-ы? например boost::unit_test::something - мне что каждый раз тятнуть за собой эту тягомотину? но одно верно "using namespace std" - это зло. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
дело даже не в заголовочных файлах а в области видимости.. в общем надо делать так чтоб "других" твои раскрытия видимости не коснулись.. "других" это не людей, а фрагментов кодов имеющих свою логику.. они могут быть как в одном файле , так и в разных.. |
|||
|
||||
| Master01 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 22.8.2007 Репутация: 2 Всего: 2 |
azesmcar, наверно, я всё же слишком безапеляционно высказался насчёт "using namespace std." Мне почему-то кажется, что вы готовы из рукава вытащить тройку-другую контраргументов для меня Правельнее было бы сказать, что Я предпочитаю такой подход не использовать, однако, не настаиваю, что моё мнение единственно правельное. Однако, по вашему вопросу - я так не пишу из 2х соображений: 1. Не очень будет приятно если что-то из std или из другого "густонаселённого" namespace-а начнёт конфликтовать с чем-то таким же загадочным из другого namespace-а. 2. Так более понятно какой именно функционал из какого namespace-а используется в данном модуле. Добавлено через 11 минут и 46 секунд boostcoder, спасибо. Интересный вариант. Единственное, что меня смущает это не запутается ли, читающий код человек, в таком лабиринте namespace-ов? Просто, все знают что такое boost::unit_test, а вот but придётся поискать определние. Если предположить что таких "петель" много, то можно основательно запутаться, наверно .... хотя, так во всём, если подходить к проблеме бездумно. |
|||
|
||||
| Henpyxa |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 9.10.2010 Репутация: нет Всего: нет |
я не знаю что это такое а насчет книги.. заметил где-то на форуме сообщение про http://worldcpp.vingrad.ru/, почитал, понравилось
и не вкурю никак про ошибку Run-Time Check Failure #3 - The variable 'iSellPrice' is being used without being defined. недостаточно там написано про классы имхо, удобней указать один раз в маленьком коде, чем каждый раз втыкать перед cout'ами и cin'ами. про длинные коды даже страшно думать.. |
||||
|
|||||
| Crafty |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 2 Всего: 14 |
Эта переменная не инициализирована
Добавлено через 4 минуты и 56 секунд
Можно использовать
Это сообщение отредактировал(а) Crafty - 9.10.2010, 17:35 |
||||||
|
|||||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
конечно, это имя я взял с фонаря. придумайте более понятное. например boost_unit_test. хоть и выглядит длиновато, но автодополнение редактора кода позволит писать его всего по нескольким введенным символам.
тоже впервые вижу. а как часто обновляется? если обновляется вообще... |
||||
|
|||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Да нет, для этого аргументов не нужно. Аргументы нужны для обоснования того, что using namespace - зло
С предпочтениями конечно же спорить не имеет смысла, я и писал, что это вопрос личных предпочтений. Я тоже предпочитаю использовать std::, если речь зашла об этом. |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
в маленьком учебном или "для себя" коде можно вообще писать как угодно.. а вот если проект чуть побольше, то зачем создавать потенциальные проблемы, если с cout и cin достаточно уникальны и проблем не будет, но вот тот же vector есть в куче разных библиотек.. и мало того что раскрытые имена могут создать неопределенность для компилятора, так и программисту с ходу не сразу будет понятно о чем речь.. вспомните народную мудрость "подальше положишь - поближе возьмешь". используемые синонимы неймспейсов легче запомнить, раз два и обчелся, чем уследить за всеми сущностями раскрытых пространств.. вобщем найдите хороший компромис, и код будет красивым и удобным |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
На самом деле, в случае использования using namespace произойдет следующее: взяли пару стеллажей (количество пространств + глобальное + локальное) и вывалили все его содержимое в кучу, затем сказали компилятору, а нука найди мне cout в этой кучи. Лично я считаю, что using namespace: 1. в глобальной области видимости в хидерах недопустимо. Сам сталкивался... 2. в глобальной области видимости .cpp файлах нежелательно. 3. внутри функций использовать можно, но лучше использовать переименование. Например, в документации к boost::program_options приводится такая вещь: namespace po = boost::program_options. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
добавлю (хотя и было уже сказано) что если компилятору все равно в какой кучи искать, то программисту уследить за всеми связями в такой неразбирихи довольно сложно.. |
|||
|
||||
| Henpyxa |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 9.10.2010 Репутация: нет Всего: нет |
спасибы, понял
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |