저번 항목에 연이은 네임스페이스 이야기이다. 역시 알아두면 무척이나 유용하기에, 재미있게 읽을 수 있었다. 언제나 그렇듯 네임스페이스를 알고 있다면, 어떻게 사용하는게 좋을까? 에 대한 논의이다.

저번 항목에서 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 를 쓰는 것도 좋을 듯 싶다.

.. 하나 알면 하나씩 못쓰게 되는 느낌은 나만 드는 것일까? 무서워서 어디 .. 코딩 하겠나.. : )

신고
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요