Hầu hết (tất cả?) Ngôn ngữ có không gian tên có xu hướng hướng đối tượng. Nhiều lần một tên người có thể đọc được cho một loại là phù hợp, mặc dù có nhiều triển khai không tương thích. (điều này đưa ra các vấn đề khác về tái sử dụng hướng đối tượng, nhưng đó không phải là câu hỏi này là gì). Chẳng hạn, trong Java, bạn có Timer được sử dụng cho các tác vụ UI nền và Timer được sử dụng cho các tác vụ nền (không gắn với AWT / Swing). Không gian tên cho phép bạn có các đối tượng cùng tên này sống trong các API phụ khác nhau.
Lý do mà các không gian tên ra đời phải thực hiện với nhiệm vụ không hợp lý là dự đoán những gì các nhà phát triển khác sẽ đặt tên cho các đối tượng của họ. C ++ đã giới thiệu khái niệm này (hoặc ít nhất là ngôn ngữ đầu tiên tôi tiếp xúc với khái niệm này) và nó rất hữu ích mặc dù không có hướng dẫn về thực hành sử dụng tốt nhất. Java điều chỉnh khái niệm và thêm một số "thực tiễn tốt nhất" bao gồm tên công ty của bạn vào không gian tên. Bằng cách đó bạn chỉ phải lo lắng về công ty của riêng bạn.
Tiền tố có thể trở nên khá lộn xộn. Khi nào bạn áp dụng nó? Khi nào bạn không áp dụng nó? Các cấu trúc / lớp / phương thức toàn cầu có được tiền tố không? Còn phương pháp thì sao? Những gì về tính chất trong cấu trúc. Tôi đã thấy tất cả những điều này trong mã, mặc dù rất may không phải tất cả cùng một lúc. Không gian tên cung cấp một số dự đoán cho tất cả các câu hỏi này và làm cho nó trở thành một tính năng ngôn ngữ chứ không phải là một "thực tiễn tốt nhất" cá nhân.
using
một không gian tên cụ thể và sau đó không phải đặt tiền tố ở đầu các định danh trong không gian tên đó.