4.4.3 Định nghĩa một name space

Bạn có biết troll là gì không ? Vâng, troll là một sinh vật rất khó chịu mà mọi người đều biết. Trolls đến với thế giới của chúng ta từ nhiều nơi khác nhau, ví dụ như từ ngục tối Hogwarts hoặc từ bóng đen sâu thẳm của Mordor, hoặc thậm chí từ nhiều diễn đàn internet nơi họ thực hiện các hoạt động phá hoại của họ. Chính họ đã phát minh ra cho chúng ta động từ “troll”.

Hãy tưởng tượng chúng ta muốn sử dụng trolls trong phần mềm của mình. Chúng ta bắt một con từ Hogwarts và một con từ Mordor. Chúng ta có thể làm việc với chúng đồng thời mà không có nguy cơ bị nhầm lẫn không ?

Chúng ta phải tạo ra hai name space khác nhau và ràng buộc các trolls với nguồn gốc của chúng. Định nghĩa name space sẽ như sau:

namespace the_name_of_the_space  { }

Bất kỳ thực thể nào khai báo bên trong namespace (giữa dấu ngoặc mở và đóng ngoặc của nó) sẽ bị ràng buộc vào namespace này và do đó tách biệt với bất kỳ thực thể khác có cùng tên.

Hãy xem ví dụ →

Chúng ta đã định nghĩa hai namespace và đặt một troll bên trong mỗi chúng. Nếu chúng ta muốn sử dụng chúng, chúng ta phải phân biệt tên của chúng cùng với namespace. Tất nhiên, các lập trình viên thì méo sử dụng troll trong phần mềm của họ làm gì cả. Bạn có thể tưởng tượng một trường hợp thực tế hơn cho chính mình nếu bạn không thích chúng.

Giả sử rằng hai lập trình viên độc lập đã code các bộ phận khác nhau của một hệ thống rất phức tạp. Họ sẽ không thể đảm bảo rằng tất cả tên họ đã sử dụng đều khác nhau. Yêu cầu như vậy sẽ không thực tế và khó thực thi (các lập trình viên sẽ phải đồng ý với mọi tên mới được đưa vào mã của họ). Để làm được việc đó thì tất cả các thực thể của họ (ví dụ: các biến và các hàm) bị ràng buộc (hoặc được che chắn bên trong) các namespace khác nhau được đặt tên theo tên của lập trình viên hoặc nickname của họ.