Почему было бы менее неудобно набирать vehicles::cars::function
много в небольшом проекте?
Вспомните, для чего предназначаются пространства имен.Предполагается, что они избегают столкновений имен, и не более того.
Если вы придумаете такую запутанную структуру пространства имен, что у меня возникнет желание просто поставить несколько using namespace ...
вверху каждого файла, тогдаэто побеждает назначение пространств имен.
Это также не говорит мне много о том, чего я еще не знал.Что вы собираетесь поместить в ваше boats
пространство имен, которое я не знаю по одному имени?Я собираюсь нуждаться в разъяснении, что "это принадлежит лодкам" на чем-нибудь в пространстве имен?Скорее всего, нет, и тогда нет смысла иметь пространство имен.
В общем, не спрашивайте, какие проблемы существуют с использованием любой языковой функции, пока выВыяснили преимущества .Каждая функция должна оправдывать себя.Так какую проблему решат предложенные вами пространства имен?
Если это не решит реальную, актуальную проблему, то это плохая идея, несмотря ни на что.
Я всегда думаю, что поучительно смотреть на стандартные библиотеки разных языков.
.NET использует глубоко вложенные пространства имен с длинными именами.Полное имя простого динамического массива: System.Collections.Generic.List<T>
.
. В результате, никто никогда не использует пространство имен .Каждый просто ставит using System.Collections.Generic
вверху каждого файла, который должен использовать список.
И из-за этого у вас возникают проблемы в тот момент, когда вы сталкиваетесь с другим List
учебный класс.Вы захотите сделать то же самое с этим, и вуаля, у вас конфликтуют два класса List
.
C ++ использует очень плоскую структуру namespcae, где пространства имен также имеют очень короткие имена.
Эквивалентный класс в C ++ просто std::vector
.В результате люди обычно печатают префикс пространства имен, и поэтому, когда я добавляю еще один векторный класс в свой проект, * он работает '.Конфликты имен отсутствуют, потому что я использую префикс std::
, когда хочу обратиться к стандартному вектору библиотеки.