' [C/C++] 2.1강 - 변수 이름 규칙, 변수 이름 표기법 (카멜,파스칼,스네이크)

Programming/C & C++

[C/C++] 2.1강 - 변수 이름 규칙, 변수 이름 표기법 (카멜,파스칼,스네이크)

mdisprgm 2021. 6. 9. 20:48
728x90

이 글에서는 변수 이름을 정할 때 지키는 규칙들에 대해 얘기한다.

컴파일러 차원에서 방지하는 표기도 있지만

협업을 하거나, 오픈소스 프로젝트를 진행할 때 변수 이름을 이해하기 쉽게 작성하는 것은

기본 매너(?)이기 때문에 잘 숙지하는 것이 좋다.

 

(1) 변수명에서 허용되지 않는 것들

1. 변수명의 첫 글자는 무조건 문자여야 한다.

 

즉 아래와 같은 선언은 허용되지 않는다.

int 1x = 3;//Error

 

 

2. 변수명에는 띄어쓰기가 존재할 수 없다.

 

어찌보면 당연한 것이.. 만약 가능해진다면 이게 변수명인지 뭔지 알기 힘들 꺼다.

 

 

3. 변수명에 포함할 수 있는 특수문자는 '@', '$' 뿐입니다. 그 둘만 연산자로써 쓰이지 않는다.

 

 

4. 예약어는 절대 사용할 수 없다.

 

예약어란 이미 컴파일러가 사용하려고 '예약'해놓은 단어들로

 

프로그래머는 사용할 수 없는 단어들이다.

 

예를 들어 자료형 이름들, 키워드 'return', 키워드 'class', 등이 있다.

 

 

 

(2) 띄어쓰기의 대안

위에서 말한 띄어쓰기가 안되는 것 때문에 흔히 쓰이는 표기법들이 있는데,

 

서론에 말한 '매너'가 여기서 시작된다.

int myVariableName = 1;//카멜 표기법
float MyVariableName = 2;//파스칼 표기법
char my_varaible_name = 3;//스네이크 표기법

위에서부터 차례대로 카멜, 파스칼, 스네이크 표기법이라고 한다.

 

 

1) 카멜 표기법은 첫 단어의 앞글자는 소문자로, 이어지는 띄어쓸 단어의 앞글자는 대문자로 쓰는 방식이다.

 

여러 개발자가 애용하는 방식이기도하다.

 

변수 이름에 자주 쓰인다.

 

 

2) 파스칼 표기법, 카멜 표기법과 같은데, 다만 첫 단어의 앞글자도 대문자로 적는다는 차이점이 있다.

 

아무래도 첫 글자가 대문자인 건 실제 영어에서 단어의 첫 글자를 대문자로 표기하는 경우와

 

비슷한 이치인 것 같다.

 

typedef나 클래스 이름, 함수 이름 자주 쓰이는 것 같다.

 

 

3) 스네이크 표기법, 보시다시피 띄어쓰기가 필요한 곳에 '_' 문자를 넣는다.(underscore?)

 

(아마 범용적인 가독성 때문에) 표준 헤더&라이브러리에서 쓰이는 것을 많이 봤다.

 

 

사실 위에서 말한 것들 말고 표기법이 한 가지가 더 있는데, 헝가리안 표기법이라고 있다.

 

그런데 요즘엔 거의 쓰이지 않는다고 하니 굳이 다 기억할 필요는 없을 듯.

대부분 접두사로 붙여진다.

접두사 의미
str (string) 문자열 (std::string 등)
ch (char) char 형 변수
p (pointer) 포인터 변수
sz (string-zero) 문자열 (char[], NULL을 이용하는)
arr (array) 배열

 

통상적으로 이런 의미라고 하는데

 

검색해보면 굉장히 많이 나온다.

 

물론 카멜 표기법을 함수나 클래스이름에 쓰거나, 파스칼 표기법을 변수에 써도 된다.

 

다만, 적어도 한 프로젝트 내에선 각 표기법의 뉘앙스(?)를 유지하거나 방식을 통일시키는 것이 중요하다.

 

하다보면 같은 변수나 함수라도 어떤 표기법을 쓰는 게 관례적인지 감이 올 것이다.

 

 

 

끝.

728x90

'