외부 전역 변수를 사용하지 말고, 이름이 namespace에 있는 변수를 사용한다
변수의 출처가 명확해진다
정적 전역 변수을 사용하지 말고, 이름이 무명 namespace에 있는 변수를 사용한다
static int a;
보다는
namespace
{
int a;
}
를 사용한다
함수 또는 클래스 라이브러리 개발하는 경우, 그들을 하나의 namespace에 넣는다
실제로 C++ 표준 라이브러리 함수들은 std라는 namespace에 넣을 것을 요구한다
using 지시자 사용을 피한다
//using 지시자보다는 using namespace std; //using 선언이나 사용 범위 연결 연산자(::)를 사용한다 using std::wcout; using std::wcin; wcout << L"안녕하세요. 양배추한닢입니다." << std::endl;
일반적으로 사용할 수 있게 하려는 것이 무엇인지 분명하게 나타내 주는 using 선언이나 사용 범위 결정 연산자(::)를 사용하는 것이 더 안전하다
namespace와 선언 영역이 둘 다 같은 이름을 가지고 있다고 가정하자
(선언 영역이란 어떤 변수를 선언할 수 있는 영역이다. ex 블록 안에서 선언된 변수는 그 블록이 선언 영역)
using 선언을 사용하여 그 이름 공간에 있는 이름을 선언 영역으로 불러오려고 시도하면, 두 이름이 충돌하여 에러가 발생한다
그에 반해 using 지시자를 사용하여 그 namespace에 있는 이름을 선언 영역에 불러오면 그 이름의 지역 버전이 namespace 버전을 덮어쓴다
(오류의 발생 원인을 파악하기 힘들다)
using 지시자를 헤더 파일에 사용하지 않는다
헤더 파일에서 using 지시자를 사용하게 되면 어떤 이름들을 사용할 수 있게 하는지 알 수 없다
그리고 헤더 파일들의 순서가 행동에 영향을 미칠 수 있다
부득이하게 using 지시자를 사용한다면 전처리기 지시자 #include 뒤에 놓는다
using 선언에 대한 전역 범위 대신 선택적으로 지역 범위를 사용한다
간단한 프로그램을 관리할 때는 위와 같은 규칙을 무시해도 괜찮다
하지만 규모가 큰 프로그램을 관리할 때는 이야기가 달라진다
한 두명이 아닌 다양한 사람들과 하나의 프로그램을 만들기 때문에 namespace를 이용한 무언의 소통이 필요하다
처음에는 어색할지 몰라도 점차 익숙해지도록 노력해보자
동료간의 원활한 작업과 일정 관리에 힘이 되어줄 것이다
'Programming Language > C/C++' 카테고리의 다른 글
[C/C++] 한글 출력 오류, 유니코드, MBCS, 국제화 (3) | 2017.06.01 |
---|---|
[C++] 연산자 오버로딩과 프렌드 (0) | 2017.06.01 |
[C/C++] ios_base 클래스, setf, fmtflags 출력 형식 지정 (0) | 2017.05.18 |
[C/C++] atan2 함수로 각도 구하기 (극 좌표계) (0) | 2017.05.11 |
[C/C++] 포인터와 const (0) | 2017.05.10 |