Không gian tên

Với nghĩa chung chung, không gian tên (tiếng Anh: namespace) là một vật chứa trừu tượng cung cấp ngữ cảnh cho đối tượng (tên, thuật ngữ kỹ thuật, hay từ). Nó cho phép phân biệt các đối tượng có cùng tên (ở các không gian tên khác nhau).

Theo quy tắc, các tên nằm trong một không gian tên không thể nhiều hơn một nghĩa. Nghĩa là, hai hoặc nhiều đối tượng không thể cùng chia sẻ một tên. Một không gian tên còn được gọi là một ngữ cảnh, với một ý nghĩa hợp lệ của tên có thể thay đổi phụ thuộc vào việc đang sử dụng không gian tên nào. Các tên trong không gian tên đó có thể đại diện cho đối tượng hoặc khái niệm, cho dù đó là ngôn ngữ tự nhiên, thuật ngữ kỹ thuật chuyên ngành, phương ngữ, hay một ngôn ngữ nhân tạo (chẳng hạn ngôn ngữ lập trình)

Trong nhiều ngôn ngữ lập trình, không gian tên là ngữ cảnh cho các định danh (identifier). Trong các hệ điều hành, một ví dụ về không gian tên là thư mục. Các đối tượng chứa trong nó phải có tên phân biệt. Trong ngôn ngữ lập trình java, những gì xuất hiện trong không gian tên có một tên ngắn (địa phương) và các tên dài không trùng nhau để sử dụng bên ngoài không gian tên. Ngoài ra, một vài ngôn ngữ (chẳng hạn C) kết hợp các không gian tên và tên trong một quá trình xử lý được gọi là name mangling (tên xác định trong lệnh) để loại bỏ sự nhập nhằng về tên.

Ví dụ về một không gian tên trong ngôn ngữ lập trình C++:

//không gian tên Box1
namespace Box1{
   int boxSide = 4;
}

//không gian tên Box2
namespace Box2{
   int boxSide = 12; 
}

int main () {
  cout << Box1::boxSide << endl;  //In ra giá trị biến boxSide trong không gian tên Box1 với giá trị 4
  cout << Box2::boxSide << endl;  //In ra giá trị biến boxSide trong không gian tên Box2 với giá trị 12

  return 0;
}

Tham khảo

Quy ước đặt tên