Пространства имен служат нескольким ключевым целям:
- Они помогают избежать коллизий имен между типами, которые разные разработчики и разные организации создают и совместно используют.
- Они помогают организовывать типы в группы для созданиялегче понять, что они делают и какие типы относятся друг к другу или используются вместе.
Теперь к вашему конкретному вопросу.Ссылка на типы во внутреннем пространстве имен из внешнего не очень желательна, но и не ужасна.Хотя сейчас я не могу вспомнить ни одного из них, я не удивлюсь, если в самой среде .NET будут случаи, когда такая ситуация существует.Как общий принцип проектирования, хорошая идея - строить код по уровням;и часто эти уровни структурированы таким образом, что менее «специализированный» код не знает о более «конкретном коде».
Вложение пространства имен - это один из способов отделения более специализированных типов от менее специализированных.Таким образом, пространство имен System
содержит очень общие и широко применимые типы - тогда как System.Drawing
более специализировано и содержит типы, относящиеся к изображению и визуальным манипуляциям.
Однако вам следует избегать использования пространств имен для группировкитипы на основе доступности.Это определенно является злоупотреблением пространствами имен - и, вероятно, вызовет проблемы в долгосрочной перспективе (особенно из-за того, что обычно расширяется доступность типа - но может быть довольно сложно изменить, в какое пространство имен он входит).
Однако, по моему мнению, до тех пор, пока вы будете последовательны в том, что делаете, и есть разумное разделение типов между пространствами имен, я думаю, вы будете в порядке.