Именование иерархических структур в 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)


arrow_upward
3
arrow_downward

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

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

person Andrei    schedule 05.06.2011

arrow_upward
1
arrow_downward

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

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

person Community    schedule 05.06.2011

arrow_upward
0
arrow_downward

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

person Community    schedule 05.06.2011