보통 C++을 코딩할때 제일 첫줄에 using namespace std;를 선언하고 사용합니다.
이렇게 하면 std:: 를 붙여야할 함수/형식을 사용하기 보다 간편해지죠
그러나 C++을 사용하는 사람들은 using namespace std; 를 사용하지 말라고 합니다.
그 이유는 아래 글에서 찾을 수 있습니다.
이것은 성능에 관련된 것이 전혀 아닙니다. 하지만 이것을 고려해보세요.
당신은 Foo와 Bar라고 불리는 2개의 라이브러리를 사용하고 있습니다.
using namespace foo;
using namespace bar;
모든 것이 정상적으로 작동하고 당신은 Foo로부터 Blah()를 호출할 수 있고 Bar로부터 Quux()를 호출할 수 있습니다.
아무 문제 없이 말이죠. 하지만 어느날 당신은 Quux()가 추가된 Foo 2.0 으로 업그레이드를 수행하려고 합니다.
이제 당신은 충돌이 발생하는 것을 볼 수 있습니다.
Foo 2.0과 Bar가 모두 Quux()를 global namepsace에서 import하기 때문입니다. 결국 수정해야 할지도 모르며, 특히 함수의 매개변수가 동일할 경우에는 확실합니다.
만약 당신이 foo::Blah() 와 bar::Quux()와 같이 사용했다면 foo 2.0에 추가된 Quux()는 아무 문제를 일으키지 않았을 것입니다.
출처 : Why is “using namespace std;” considered bad practice?
이런식으로 오류가 발생할 가능성이 높기 때문에, 후의 개발 가능성을 위해서도 std 클래스를 저렇게 import하는것은 지양해야 할 코딩 방식입니다.
만약 std::cout을 사용하려는데, 너무 많아서 std::를 쓰기 귀찮다면 아래와 같은 방법을 사용하면 됩니다!
using std::cout;
적어도 이런식으로 작성했다면, 미연의 오류 발생 확률을 적어도 줄일 수 있겠죠.
문제가 생긴다면 저 줄만 지우고, std::를 붙여주기만 하면 되니까요!
2020/01/31 - [C] - [C++] std::string 앞 뒤에 개행문자 제거
2020/01/28 - [분류 전체보기] - 티스토리 애드센스 ads.txt 해결 방법
2020/01/27 - [서버 개발일지] - 글 하나로 2일 만에 끝내는 G Suite for Education 등록
'C' 카테고리의 다른 글
[C++] std::string 앞 뒤에 개행문자 제거 (0) | 2020.01.31 |
---|---|
Native C로 리듬게임 만들기 #1 (0) | 2020.01.27 |
C4droid를 개조한 C언어 컴파일러 (0) | 2018.05.21 |
댓글