저번 항목에 연이은 네임스페이스 이야기이다. 역시 알아두면 무척이나 유용하기에, 재미있게 읽을 수 있었다. 언제나 그렇듯 네임스페이스를 알고 있다면, 어떻게 사용하는게 좋을까? 에 대한 논의이다.
저번 항목에서 using 키워드 하나로 사용하기 꺼려진다면, 당신은 루키, 떠오르는 샛별!, 그 느낌 그대로 계속 정진해야겠다. .. 알면 알수록 .. 점점 키워드라든지 어떤 편한것에 대해서 점점 아예 사용하기 꺼려진다. 타이핑 몇번(using 키워드의 타이핑)만 해서 편해지는 것 보다, 타이핑 몇번(std:: 로 직접 호출)하는것이 더 좋겠다.
이번 항목은 이런 꺼려지는 내용들에 대한 마지막 정리이다.
네임스페이스로 마이그레이션은 책을 통해 보면 금방 이해하니 예제코드는 제외하고.. 요령만 정리하자면
1. using 지시자를 절대로 해더파일에 작성하지 마라
.. 테스트 해 보니 MSVC2005 에서 using 이 정의되어 있는 헤더파일 #include 시 .. #include 된 해더파일 역시 다 적용 된다.
2. 네임스페이스 using 선언을 절대 헤더파일에 작성하지 마라
... 1번의 정리보다 못해도 10배는 더 위험한 행동이다.
3. 구현 파일에서 using 선언이나 using 지시자를 절대로 #include 지시자 앞에 작성하지 마라
39 항목에서 그 순서에 따른 "보여짐"을 설명했다.
4. C헤더를 예전 스타일인 #include <header.h>로 쓰지 말고 새로운 스타일인 #include <cheader> 로 써라.
쉽게 말해서 #include <iostream.h> 말고 #include <iostream> 을 쓰는 것을 권장하는 것이다. 이것은 이론적인 완전성과 표준에 부합되기 때문이다. .. 표준을 지켜 일반화 프로그래밍을 하는게 .. 장기적으로 봐도 더 좋다.
총평
개인적으로 함수 내부에 using 을 선언해서 사용 하면 그나마 좀 낮다. 왜냐하면 그 함수 내부에서만 검색순위를 동등하게 올리기 때문이다. 내가 자주 사용하는 방법인데 Effective C++ 에서 std::swap 에 있어, 이렇게 하는것이 좋은 더 좋다고 이야기 하고 있다. 물론 이것 때문에 배운 것이지만 : )
어지간해선 .. namespace using 은 피하고 using 선언으로 개별 함수나 클래스 한개씩 끄집어서 사용 해야겠다 싶다. 이것을 좀더 .. 안정화 시키려면 38 항목에서의 typedef 를 쓰는 것도 좋을 듯 싶다.
.. 하나 알면 하나씩 못쓰게 되는 느낌은 나만 드는 것일까? 무서워서 어디 .. 코딩 하겠나.. : )
'책 정리 > More Exceptional C++' 카테고리의 다른 글
항목 29 : auto_ptr 사용 하기 (난이도 : 5) (0) | 2008.12.14 |
---|---|
항목 35 : #define (난이도 : 4) (0) | 2008.12.13 |
항목 34 : 전처리 매크로 ( 난이도 : 4 ) (0) | 2008.12.13 |
항목 33 : 네스티드 함수 시뮬레이션 (nested function) ( 난이도 : 5 ) (0) | 2008.12.13 |
항목 32 : 재귀적인 선언 ( 난이도 : 6 ) (0) | 2008.12.13 |
항목 39 : 네임스페스 Part 1 : using 선언과 using 지시자 (난이도 : 2) (1) | 2008.12.08 |
항목 38 : typedef (난이도 : 3) (0) | 2008.12.08 |
항목 37 : 전방 선언(forward dclarations) (난이도 : 3) (0) | 2008.12.08 |
항목 36 : 초기화 (변수 초기화, 생성자의 문제점) (난이도 : 3) (0) | 2008.12.07 |
항목 23 : 예외 안전 클래스 설계 Part 2 : 상속 (난이도 : 6) (0) | 2008.12.06 |
최근댓글