Більшість (усі?) Мов з просторами імен, як правило, орієнтовані на об'єкти. Багато разів зрозуміле для людини ім’я для типу є доречним, навіть якщо є кілька несумісних реалізацій. (це спричиняє інші проблеми щодо об'єктно-орієнтованого повторного використання, але це не те, про що йдеться). Наприклад, у Java у вас є Таймер, який використовується для фонових завдань користувальницького інтерфейсу, і Таймер, який використовується для фонових програм (не прив’язаних до AWT / Swing). Простір імен дозволяє вам мати одноіменні об'єкти, що живуть у різних під-API.
Причина виникнення просторів імен була пов'язана з необгрунтованою задачею передбачити, як інші розробники назвуть їх об'єкти. C ++ запровадив цю концепцію (або, принаймні, це була перша мова, до якої я зазнав цієї концепції), і це було корисно, хоча не було вказівок щодо найкращих практик використання. Java адаптувала концепцію та додала деякі "найкращі практики", які включали назву вашої компанії в область імен. Таким чином вам довелося лише хвилюватися про власну компанію.
Префіксація може стати досить безладним. Коли ви застосовуєте його? Коли ви не застосовуєте його? Чи отримують префікс структури / класи / глобальні методи? Що з методами? Як щодо властивостей у структурі. Я бачив усі ці речі в коді, хоча, на щастя, не всі відразу. Простори імен забезпечують деяку передбачуваність усіх цих питань, а це робить його мовною особливістю, а не особистим "найкращим досвідом".
using
певним простором імен, і тоді вам не доведеться ставити префікс на початку ідентифікаторів у цьому просторі імен.