출처 : 지식인

http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=103092664&qb=64Sk7J6E7Iqk7Y6Y7J207Iqk&enc=utf8&section=kin&rank=3&search_sort=0&spq=1&pid=RU1uQF5Y7t8sscUGc80sssssssV-370126&sid=UX1CcXJvLDYAAHLTaog


예를들어 서울이라는 사람과 부산이라는 사람이 프로그램을 개발합니다.

 

역할분담을 하여 개발을 해서 합치려고 보니까 함수 이름이 같게 되어 함수 이름 등을 다 뜯어 고쳐야 하는 상황이 올 수 있습니다.

이런 현상이 발생하는 이유는 함수 이름에도 규칙이 있기 때문입니다. 함수는 최소한의 기능을 수행해야 하며, 함수의 이름은 직관적으로 알 수 있도록 지어야 합니다.

예를들어 학생의 주소를 반환하는 함수라면 getStudentAddress() 이런 이름등이 되겠죠

 

이 뿐만 아니라 혼자서 프로그램을 개발하다 보면 이름의 충돌등이 발생할 수 있습니다.

이를 막기 위해 네임스페이스를 사용합니다.

 

namespace 서울

{

   getStudentAddress();

}

 

namespace 부산

{

   getStudentAddress();

}

 

이렇게 된다면

 

두 함수의 이름이 같을지라도 얼마든지 구분하여 사용할 수 있습니다.

(이름이 같아도 함수의 역할이나 매개변수, 리턴값들이 다를 수 있습니다.)

 

네임 스페이스의 사용방법은 위의 경우처럼 선언을 하시면 되고

사용할때는

서울::getStudentAddress();  처럼 사용하시면 됩니다.

 

그리고 네임 스페이스를 별도로 정의하지 않아도 항상 존재하는 네임 스페이스가 있는데 이를 전역 네임 스페이스라고 합니다. 디폴트 네임 스페이스라고 볼 수 있는데 흔히 전역변수를 선언하는 영역, 그러니까 함수의 바깥쪽이 바로 이 영역입니다. 이 영역은 원래부터 존재하므로 별도의 이름은 없습니다.

 

 

다음은 네임 스페이스의 작성규칙입니다.

1. 네임 스페이스의 이름도 일종의 명칭이므로 다른 명칭과 중복되어서는 안된다.

2. 네임 스페이스는 반드시 전역 영역에 선언해야 한다.

3. 네임 스페이스끼리 중첩 가능하다. 즉, 네임 스페이스 안에 또 다른 네임 스페이스를 선언할 수 있다.

4. 네임 스페이스는 항상 개방되어 있다.그래서 같은 네임 스페이스를 여러 번 나누어 명칭을 선언할 수 있다. 꼭 한꺼번에 몰아서 네임 스페이스내의 모든 명칭을 일괄 선언해야 하는 것은 아니다.

5. 네임 스페이스가 이름을 가지지 않을 수 있다.

6. 단일 모듈 프로젝트에서는 별 상관이 없지만 다중 모듈 프로젝트에서는 함수의 본체를 어디에 작성할 것인가 주의해야 한다. 여러 개의 모듈로 나누어진 프로젝트를 개발할 때는 보통 헤더 파일과 구현 파일을 따로 작성한다. 네임 스페이스안에 함수를 정의할 때 헤더 파일에 원형만 선언하고 구현 파일에 함수의 본체를 작성한다

 

 

 

 

즉, 네임스페이스는 개발자들에게 편의를 제공하기 위한 용도이며, 개발된 프로그램간의 충돌을 방지하기 위한것이다. 예를들어, 개발회사에서 함수테이블의 제공은 소속된 프로그래머들간의 변수이름의 혼란을 막기위해서이다. 하지만 기 개발된 프로그램의 경우 모든 변수이름을 변경하기엔 시간과 자원적인 낭비이다. 이럴때 바로 네임스페이스를 사용하게 되면 대단히 편리할것이다.

'Any Notion > What is that?' 카테고리의 다른 글

연산속도 단위  (0) 2014.02.11
AD-HOC network  (0) 2013.04.29
Daemon  (0) 2013.04.29
D-BUS  (0) 2013.04.29
모수란?  (0) 2013.04.27

+ Recent posts