Namespace (programming)
A namespace is a named container that holds data structures, functions, and other code elements, preventing naming conflicts in large programs. Think of it as a labeled filing cabinet: multiple cabinets can each have a drawer labeled "Database," and there's no confusion because you know which cabinet you're opening.
Namespaces let different teams, libraries, or modules use the same name for different things without collision. If library A defines a Logger class and library B defines its own Logger, a namespace keeps them separate: A::Logger and B::Logger are distinct. This becomes crucial as software grows in scale and complexity.
Most modern languages support namespaces—C++ uses namespace, Java uses packages, Python uses modules, and C uses namespace declarations. They're essential for organizing large codebases, managing dependencies, and preventing accidental name shadowing.
Namespaces can be nested, creating hierarchies: company::project::utility::Logger. They're also a key part of avoiding the global namespace pollution problem, where hundreds of top-level names would make code fragile and unreadable.
Related
Module (programming), Scope (programming), Package Manager, Software architecture