Vietnamese Developers’ Blog

Có nên sử dụng “using namespace std” hay không?

Posted in C/C++ by kiennguyen on August 28, 2007

Nguồn:
http://www.parashift.com/c++-faq-lite/coding-standards.html#faq-27.5

Câu trả lời là KHÔNG

Mọi người thường không thích việc phải gõ std:: ở mọi nơi, họ thích sử dụng “using namespace std” hơn vì chỉ với một vài thao tác gõ phím trình dịch sẽ thấy được tất cả các tên trong namespace std. Tuy nhiên điều đó cũng có nghĩa là trình dịch sẽ nhìn thấy cả các tên của namespace std mà bạn không hề có ý định sử dụng chúng. Nghĩa là bạn có thể vô tình tạo ra các tên xung đột với nhau hoặc các tên có ý nghĩa không rõ ràng. Ví dụ, chương trình của bạn sử dụng một biến đếm hoặc một hàm tên là count. Tuy nhiên thư viện chuẩn cũng có một hàm tên là count và điều này có thể gây ra sự nhập nhằng.

Ý nghĩa của việc sử dụng các namespace là để ngăn ngừa việc xung đột giữa các đoạn code được phát triển một cách độc lập. Việc sử dụng “using namespace XYZ” (hay còn gọi là using-directive) sẽ đặt một namespace vào một namespace khác và điều này đi ngược lại với mục đích ban đầu của các namespace.

Sử dụng using-directive là cách đơn giản nhất để chuyển các chương trình C++ cũ sang việc sử dụng các namespace. Tuy nhiên bạn không nên tiếp tục sử dụng chúng trong các chương trình mới.

(more…)

Có nên sử dụng “using namespace std” hay không?

Posted in C/C++ by kiennguyen on August 28, 2007

Nguồn:
http://www.parashift.com/c++-faq-lite/coding-standards.html#faq-27.5

Câu trả lời là KHÔNG

Mọi người thường không thích việc phải gõ std:: ở mọi nơi, họ thích sử dụng “using namespace std” hơn vì chỉ với một vài thao tác gõ phím trình dịch sẽ thấy được tất cả các tên trong namespace std. Tuy nhiên điều đó cũng có nghĩa là trình dịch sẽ nhìn thấy cả các tên của namespace std mà bạn không hề có ý định sử dụng chúng. Nghĩa là bạn có thể vô tình tạo ra các tên xung đột với nhau hoặc các tên có ý nghĩa không rõ ràng. Ví dụ, chương trình của bạn sử dụng một biến đếm hoặc một hàm tên là count. Tuy nhiên thư viện chuẩn cũng có một hàm tên là count và điều này có thể gây ra sự nhập nhằng.

Ý nghĩa của việc sử dụng các namespace là để ngăn ngừa việc xung đột giữa các đoạn code được phát triển một cách độc lập. Việc sử dụng “using namespace XYZ” (hay còn gọi là using-directive) sẽ đặt một namespace vào một namespace khác và điều này đi ngược lại với mục đích ban đầu của các namespace.

Sử dụng using-directive là cách đơn giản nhất để chuyển các chương trình C++ cũ sang việc sử dụng các namespace. Tuy nhiên bạn không nên tiếp tục sử dụng chúng trong các chương trình mới.

(more…)