Именование иерархических структур в C++

Мне нужен совет для следующей иерархической структуры, которую я хочу представить в программе на C++.

Существует один абстрактный класс uri и производные от него классы url и urn. Я хотел бы иметь один каталог, содержащий исходный код концепции uri. И пространство имен, которое должно называться .. uri. :)

Итак, я перехожу к своему вопросу. Когда пространство имен уже называется «uri», как мне тогда назвать абстрактный класс «uri»? Какое соглашение об именах обычно используется для этой задачи в C++? base, uri_base, basic_uri или как бы вы его назвали?

И мой второй вопрос. Как часто вы можете вкладывать пространства имен, прежде чем пользователям это надоест? Например, у меня есть части uri, такие как authority, query и т. д. Было бы разумно создать новое пространство имен (например: parts) и поместить исходный код этих классов в новый подкаталог? Или это просто "переработано"?

Спасибо и привет

настоящий


person reeaal    schedule 05.06.2011    source источник


Ответы (3)


Пространства имен не основаны и не должны основываться на фактических каталогах, в которых хранятся файлы. Их цель состоит в том, чтобы сгруппировать связанные классы/структуры/константы вместе и уменьшить неоднозначность.

Нет проблем с тем, чтобы называть класс так же, как и содержащее его пространство имен (например, uri::uri). Имена следует выбирать с мыслью о программисте, который будет использовать классы.

person Andrei    schedule 05.06.2011

Когда пространство имен уже называется «uri», как мне тогда назвать абстрактный класс «uri»?

Вы можете просто назвать его «uri», если хотите, вы можете без проблем иметь идентификатор с тем же именем, что и окружающее пространство имен.

person Community    schedule 05.06.2011

Вы неправильно используете пространства имен. По сути, они предназначены для предотвращения конфликтов имен между библиотеками - в общем случае у вас должно быть ОДНО пространство имен для каждой библиотеки.

person Community    schedule 05.06.2011