Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Часть 4. Делаем проблему еще серьезнее
Как я уже сказал ранее, фундаментальная задача пространств имен заключается, прежде всего, в организации типов в иерархии, а не в разделении двух сущностей с одинаковыми именами. Но предположим, что вы поместили нечто в пространство имен, поскольку у вас есть две сущности с одинаковыми именами и должны находиться раздельно. Предположим, вы руководствовались следующей логикой: «Я собираюсь поместить класс List в свое собственное пространство имен, поскольку имя List может конфликтовать с другим классом с именем List. У пользователя должна быть возможность уточнить, какой тип ему нужен.»
ОК, все отлично. Тогда поместите класс List в пространство имен MyContainers. Но зачем повторять этот процесс и помещать класс List в дочернее пространство внутри MyContainers? Наиболее вероятная причина заключается в том, что степень устранения неоднозначности, полученная до этого, является неудовлетворительной. Какая-то другая сущность с именем List будет находиться в той же области видимости, что и элементы пространства имен MyContainers .
Давайте предположим, что именно эта причина побудила к созданию пространства имен MyContainers и затем к созданию нового подпространства имен – MyContainers.X, в котором и будет располагаться класс List. Какое имя следует выбрать для X? Если ключевой момент заключается в том, что в той области видимости, в которой находятся элементы пространства имен MyContainers, имеется еще один тип с именем List, тогда выбор “List” для “X” усугубляет проблему, но никак не решает ее! До этого, в одной области видимости у вас были две сущности с именем List. Теперь у вас стало три сущности с таким именем: две из которых находятся в одной области видимости. Это лишь дополнительно сбивает с толку, но при этом не решает никакой проблемы: у вас как были, так и остались две сущности с именем List в одной области видимости.
Каждая из приведенных четырех причин является достаточной для того, чтобы вы постарались избегать такой ситуации.