이 글에서는 변수 이름을 정할 때 지키는 규칙들에 대해 얘기한다.
컴파일러 차원에서 방지하는 표기도 있지만
협업을 하거나, 오픈소스 프로젝트를 진행할 때 변수 이름을 이해하기 쉽게 작성하는 것은
기본 매너(?)이기 때문에 잘 숙지하는 것이 좋다.
(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) | 배열 |
통상적으로 이런 의미라고 하는데
검색해보면 굉장히 많이 나온다.
물론 카멜 표기법을 함수나 클래스이름에 쓰거나, 파스칼 표기법을 변수에 써도 된다.
다만, 적어도 한 프로젝트 내에선 각 표기법의 뉘앙스(?)를 유지하거나 방식을 통일시키는 것이 중요하다.
하다보면 같은 변수나 함수라도 어떤 표기법을 쓰는 게 관례적인지 감이 올 것이다.
끝.
'Programming > C & C++' 카테고리의 다른 글
[C/C++] 5.1강 - C의 다양한 연산자(사칙대입연산자,증감연산자,sizeof,비트연산자) (0) | 2021.06.12 |
---|---|
[C/C++] 5강 - C의 다양한 연산자(사칙연산자,관계연산자,논리연산자) (0) | 2021.06.09 |
[C/C++] 4강 - 자료형에 대하여··· (부동 소수점, ASCII, signed & unsigned) (0) | 2021.06.06 |
[C/C++] 3.1강 - scanf 사용 시 주의 사항!! (white-space 버그) (0) | 2021.06.06 |
[C/C++] 3강 - 변수를 출력하고 입력받는 법 (printf, scanf, scanf_s) (0) | 2021.06.05 |