Мне было сказано, что плохо использовать "namespace ns123" в файле заголовка, но я не могу вспомнить, какая причина была. На самом деле это плохо, и почему?
Неправильно ли использовать ключевое слово С++ в ключевом файле?
Ответ 1
Это плохая практика, в общем, потому что она побеждает цель пространства имен. Определив в заголовке, вы не применяете строгий контроль над областью применения объявления, что означает, что вы можете столкнуться с именами в неожиданных местах.
Ответ 2
Если вы поместите объявление using
в заголовочный файл, все, что #include
заголовочный файл также импортирует пространство имён, хотят они этого или нет. Это нарушает принцип наименьшего удивления и поражает цель пространств имен, позволяя изменять оператор #include
, чтобы легко вызвать столкновение имен. Если вы хотите импортировать пространство имен в свой собственный .cpp файл, чтобы сохранить небольшую типизацию и создать более читаемый код, это прекрасно. Просто не заставляйте пользователей вашего модуля делать то же самое.
Ответ 3
Вытягивание всех классов и функций из их пространства имен обычно является плохой идеей и фактически противоречит понятию наличия пространств имен... обычно лучше использовать "использование" для определенного класса или функции.
Ответ 4
Это часто дает вам странные и загадочные ошибки компиляции, во-первых, где вы можете потратить часы, пытаясь выяснить корень проблемы.
Ответ 5
Обычное программирование на С++
Да, часто есть места, где это имеет смысл, и вы контролируете, где и как вы используете свои stamenets. Если это программа с ограниченной областью, вам не нужно беспокоиться о том, чтобы использовать ее в глобальном масштабе.
Для монолитных приложений я бы сильно рекомендовал не размещать приложения в очень занятом пространстве имен, так как столкновения сгонят вас с ума после того, как вы будете совершены. Например:
- ::
- :: companyname
- :: НазваниеКомпании:: компонент
- :: НазваниеКомпании:: Компонент:: субкомпонент.
Я бы сказал, что вполне приемлемо начинать работу с использованием заявлений на уровне 3 или 4, - вот почему вероятность столкновения начинает становиться очень низкой.
Общие/Программирование TMP
В общем программировании и использовании TMP часто используется для настройки ваших библиотек для определенного домена, и это часто делается с помощью операторов.