Подтвердить что ты не робот

Неправильно ли использовать ключевое слово С++ в ключевом файле?

Мне было сказано, что плохо использовать "namespace ns123" в файле заголовка, но я не могу вспомнить, какая причина была. На самом деле это плохо, и почему?

4b9b3361

Ответ 1

Это плохая практика, в общем, потому что она побеждает цель пространства имен. Определив в заголовке, вы не применяете строгий контроль над областью применения объявления, что означает, что вы можете столкнуться с именами в неожиданных местах.

Ответ 2

Если вы поместите объявление using в заголовочный файл, все, что #include заголовочный файл также импортирует пространство имён, хотят они этого или нет. Это нарушает принцип наименьшего удивления и поражает цель пространств имен, позволяя изменять оператор #include, чтобы легко вызвать столкновение имен. Если вы хотите импортировать пространство имен в свой собственный .cpp файл, чтобы сохранить небольшую типизацию и создать более читаемый код, это прекрасно. Просто не заставляйте пользователей вашего модуля делать то же самое.

Ответ 3

Вытягивание всех классов и функций из их пространства имен обычно является плохой идеей и фактически противоречит понятию наличия пространств имен... обычно лучше использовать "использование" для определенного класса или функции.

Ответ 4

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

Ответ 5

Обычное программирование на С++

Да, часто есть места, где это имеет смысл, и вы контролируете, где и как вы используете свои stamenets. Если это программа с ограниченной областью, вам не нужно беспокоиться о том, чтобы использовать ее в глобальном масштабе.

Для монолитных приложений я бы сильно рекомендовал не размещать приложения в очень занятом пространстве имен, так как столкновения сгонят вас с ума после того, как вы будете совершены. Например:

  • ::
  • :: companyname
  • :: НазваниеКомпании:: компонент
  • :: НазваниеКомпании:: Компонент:: субкомпонент.

Я бы сказал, что вполне приемлемо начинать работу с использованием заявлений на уровне 3 или 4, - вот почему вероятность столкновения начинает становиться очень низкой.

Общие/Программирование TMP

В общем программировании и использовании TMP часто используется для настройки ваших библиотек для определенного домена, и это часто делается с помощью операторов.