Удаление увеличения пространства имен в C++

Я пишу C++ в затмении. Когда я добавляю новый класс, он запрашивает пространство имен. Я добавил буст, потому что я использую буст. Когда я посмотрел на класс, затмение окружило мой класс усилением пространства имен {}. Я думал, что пространство имен было для Java/ C#, а не C++. Кроме того, я провел небольшое исследование, и похоже, что добавление увеличения пространства имен - это большое, нет, нет. Поэтому я удалил повышение пространства имен. Один вопрос, есть ли веская причина, почему я должен сохранять увеличение пространства имен и будет ли это стирать меня позже в цикле разработки?

2 ответа

Решение

Спасибо, вот что я подумала. Я не знаю, почему Eclipse хочет, чтобы я добавил пространство имен

Эмм. @ Аарон, "добавление" пространства имен - хорошая практика, если только вы не захотите вернуться в эпоху API C с символами библиотеки вечных столкновений или неуклюжими libraryx_myfunction соглашения об именах.

На самом деле, выбор правильного пространства имен для ваших классов настолько элементарен, что я бы перефразировал это. Это не

добавление пространства имен к вашему классу;

Скорее это

создание пространства имен для вашего (позже) добавления типов и функций.

Пространства имен служат для отделения вашего кода от LibraryX и LibraryX от LibraryY и т. Д. Поэтому действительно плохая практика - выбирать имя пространства имен, которое может конфликтовать. Определение пользовательских типов прямо запрещено в std пространство имен (или неопределенное поведение).

Помещение материала в пространства имен другой библиотеки вызывает проблемы с

  • будущие расширения библиотеки
  • внутренние недокументированные символы в этих библиотеках
  • незначительные ошибки из-за ADL (где библиотека может начать находить ваши функции вместо своих собственных, не зная)

Хорошая причина, почему я должен держать повышение пространства имен?

Зачем? Вы расширяете библиотеку наддува? Я не вижу смысла поддерживать расширение пространства имен, фактически, для небольших проектов вам вообще не нужно пространство имен. Пространства имен предназначены для предотвращения конфликта имен, и для небольшого проекта, я сомневаюсь, что у вас есть (будьте осторожны с swap хоть).

По сути, ваш вопрос почти такой же, как вопрос, почему я не должен окружать свой код namespace stdВ конце концов, я использую стандартную библиотеку, верно?

Другие вопросы по тегам