![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Прости дилетанта, но это не аргумент. Когда я читаю некоторые руководства, они рекомендуют конкретно прописывать std:: как раз при использовании в нескольких строчках кода (без указания using namespace std). Еще прошу прощения. Вот я изучаю С++, бегиннер типа. Вы говорите, что std:: нужно прописывать всегда, потому что хороший стиль. У до чертиков авторов оно парабезразлично. Какие еще есть аргументы, кроме как авторы, не выучившие язык (названия обобщенных алгоритмов stl) и путающиеся в областях видимости и перегрузке, могут допустить "неотслеживамые" (для них) ошибки? Ведь мне, дилетанту, по сути дела все едино, писать ли using или нет, а лишние пять символов мне в ломы печатать сто раз на дню? Простите, если что ляпнул не так. В целях ознакомления. -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Некоторые руководства, думаю, расчитанные не на новичка, которые редко знают о возможности ограничить scope или не догадываются, что если и советуют писать using blablabla, то ни в коем случае не в заголовочном файле и т.д. Хороший стиль всегда имеет объяснение почему именно он хороший, а другой плохой. Здесь есть некоторая дискуссия на эту тему. Вообще, по возможности нужно использовать полностью квалифицированные имена, а если это выглядит жутко, то локализовывать кусочек кода где очень часто используется определённое NS и именно там писать using namespace NS; -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| Dronchik |
|
||||
![]() Звукач ёмаё ![]() ![]() Профиль Группа: Участник Сообщений: 451 Регистрация: 1.5.2007 Репутация: 0 Всего: 37 |
chelser, чтобы заюзать русские буквы есть 2 варианта
первый: заюзать функцию CharToOem
или выставить локаль
Добавлено через 3 минуты и 3 секунды Локаль жрёт меньше ресурсов -------------------- Вместо слов делай дело, от которого ты фанатеешь. (с) |
||||
|
|||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
прям так и говорят: "Не пишите std::cout - это плохо, пишите using namespace std; а потом просто cout - это хорошо"? Не верится что-то... одно дело код примера - другое рабочий. Они и ошибки зачастую не проверяют все подряд. Тем более новичку будет проще воспринимать код без пространств имен. код легче читается. И вообще, если нэймспэйс не нужен, то может тогда устранить из классов все модификаторы доступа кроме public, че там парится, закрытый член, не закрытый, сделаем все открытыми, а там разберемся |
|||
|
||||
| akizelokro |
|
||||||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Аргумент небезупречен. Что-то я не встречал "Не пишите никогда using namespace std; а потом просто cout - это плохо, пишите только std::cout - это хорошо".
это аргумент. Но у меня, новичка, не возникло бы никаких вопросов, если бы в начала цитаты не было бы слов "по возможности".
Прочитал. Более-менее серьезные аргументы в том, что не "засоряется" (кавычки мои) глобальное пространство имен и ускоряется компиляция. Про время компиляции, - поверю. По слову "засоряется", я все-таки поверю штатским тестовым сайтам, как они будут оформлять задачи по стандартной библиотке, которую эксперт должен знать наизусть. У меня вывод - откровенно четкого определения и безупречных аргументов нет. При устройстве на работу буду следовать сложившимся правилам в компании. Давайте, предупреждение у меня уже есть. Модерируйте. -------------------- a = a + b; b = a - b; a = a - b; |
||||||
|
|||||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
В задачках как правило используется не самый лучший стиль. Цель задачи описать проблему наиболее кратко и получить ответ на вопрос "умеет ли соискатель решать такого рода проблемы?". Засоряется оно очень даже хорошо. Не раз сталкивался. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 2 Всего: 261 |
Я проше прощения за поднятие старой темы, но вопрос по сабжу.
Есть ли разница в оптимальности (расход памяти, быстродействие) при обращении std::string или к своим нэймспейсам или без префикса имени пространства имен? Дело в том, что для решаемой в данный момент задаче этот вопрос очень актуален, ввиду того, что программа выполняет определенные функции раз в 10 ms, и таких функций может быть несколько. Спасибо. |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
разницы нет, пространства имен существуют только для удобства...
|
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 11 Всего: 36 |
книги, в которых имеются такие рекомендации написаны либо для ламеров, либо ламерами. не исключён также и третий вариант, являющийся логическим объединением предыдущих двух... |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 2 Всего: 261 |
Rififi, простите, Герберт Шилдт - ламер?
|
|||
|
||||
| Ulysses4j |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 6.6.2007 Где: Ростов-на-Дону Репутация: 4 Всего: 10 |
Простите, позволю себе также ответить на поставленный вопрос: Герберт Шилдт — ламер. Последний перл: этот человек во вступлении к книжке по последней Java (6-ой, значится) все еще рассуждает на тему, является ли Java япом для интернета. Откопал экскременты мамонта, называется. По сабжу: разницы нет. Все обращения, которые разнятся наличием квалификации пространства имен, связываются с объектами этих пространств имен на этапе компиляции. Упрощенно ситуацию можно представить так: на месте обращения к cout (квалифицированного или нет) компилятор вписывает адрес объекта. Пространства имен позволяют помочь компилятору понять, какой именно адрес написать (если имен cout несколько в разных пространствах имен). Как именно cout приписано к пространству имен (using или std::cout) компилятору неважно, лишь бы конфликтов не было. Он впишет нужный адрес и точка. По сабжу выше: писать директивы включения пространст имен (using namespace ...) это nasty. Плохо, типа. В стендовых примерах можно. Ну, в тестовых рутинах, если очень уж неймется, с натяжкой. Но в продакш коде («библиотечном коде») никогда. Это сообщение отредактировал(а) Ulysses4j - 11.7.2008, 05:29 -------------------- Communication is critical to the job of a programmer. C. Jazdzewski. Fatherly Advice To New Programmers |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Mal Hack, я дваждую то, что пространства имён важны только на этапе компиляции. Сгенериванный объектный код ничем не будет отличаться.
|
|||
|
||||
| Henpyxa |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 9.10.2010 Репутация: нет Всего: нет |
почитал, поржал..
страуструп и впрямь книги писать не умеет, я новичок, пытался его читать, пока искал оптимальную настольную книгу. главе на 11 мозг дал сбой, и я без зазрений совести отказался от этого варианта. и так и не дали вразумительного ответа, хорошо или плохо писать в начале кода using namespace блаблабла; мне, как ламеру, это представляется разумным, исходя из примера. берешь ты книгу со стеллажа (например cout), отходишь от стеллажа, читаешь, нужна еще одна книга (тот же std::cout) - опять идешь к стеллажу, тратишь ресурс на обращения к стеллажу (иллюстрирована конструкция std::cout), вместо того, чтобы стоять около стеллажа и доставать нужные тебе книги (не расходуя лишних ресурсов). или все устроено совсем не так? только громко не смейтесь |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Henpyxa, если приблизить к Вашему стилюм, то вот так себя чувствует компилятор:
берет cout , думает кто ж это такой, благо находит подходящий только в std:: и успокаивается, значит это он. берет cin, думает кто ж такой? находит один в std:: и один в anynamespace:: и озадачивает себя и программиста вопросом, а кой же использовать ?! берет std::cin и без всяких раздумий использует его |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
А ты Саттера попробуй На самом деле Страуструп не для новичков пишет, осилить его книгу не так уж и просто, начни с чего нибудь попроще.
Его нет, это вопрос предпочтений. Что точно можно сказать так это то, что в заголовочных файлах using писать НЕ хорошо, а в cpp пиши если хочешь. Как будет удобно. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |