Я бы сгладил только там, где для этого есть явное преимущество в обслуживании.
Пространства имен больше предназначены для организационных целей, а также помогают уменьшить конфликты имен. Я склонен поддерживать свои пространства имен в соответствии с .NET Framework и другими основными пространствами имен библиотек. Это помогает другим легче находить занятия. (Как вы говорите, обнаруживаемое расположение.) Например, мои утилиты пути находятся в Missico.IO.Path, моя библиотека доступа к данным в Missico.Data, доступ к данным моего приложения в AppName.DataManager (который использует Missico.Data и все другие данные). Пространства имен).
Я всегда использую свою фамилию или название компании в корневом пространстве имен. (Подойдет любое существительное.) Это позволяет пользователю (программисту) легко разрешать конфликты имен с помощью простого изменения имени в исходном коде или использования псевдонима для ссылок на библиотеки.
using Company = Missico;
String x = Company.IO.Path.CommonPath("", "");
Я пытаюсь сохранить папку для каждого пространства имен. Вложенность папок, если вложены пространства имен. Это помогает мне и другим быстрее находить исходный код, потому что они знакомы со структурой пространства имен. Зачем заставлять их изучать две структуры. Каждая папка содержит все исходные файлы для этого пространства имен, за исключением сложных классов. Они получают там свою собственную подпапку (без изменения пространства имен.) В итоге я могу получить папку пространства имен, которая содержит четыре или пять подпапок для сложных классов и поддерживающих классов.
Обратите внимание, что поскольку определение пространства имен System вызовет всевозможные проблемы, я использую Core в качестве своего "системного / глобального" пространства имен.