All the software within a package must have unique public names, including its references to objects in other packages, otherwise
compilation fails. Additionally public names must be unique over all the code linked into a single execution image or dynamic
link library, otherwise linking fails.
-
When you write code in a project with multiple developers you need to use namespaces to insure that names are not ambiguous.
-
You make your design easier to understand if you make the namespace names reveal your design intentions.
If you've used the Object Browser in Visual Studio, you've seen the benefit of this idea. The structure of the Standard C++ Library
and .Net APIs are nicely revealed by the namespace names used throughtout that software.