21. 명명법

C언어에서는 변수 이름, 함수 이름, 사용자 정의 형식의 태그 이름 등을 개발자가 정할 수 있어요.
C언어에서는 개발자가 정하는 이름은 다음 규칙을 따라야 하죠.

▶ 예약어를 사용할 수 없음
▶ 첫 문자로 숫자 문자를 사용할 수 없음
▶ 언더 바를 제외한 기호 문자를 사용할 수 없음
▶ 같은 블록 내에 같은 이름을 선언할 수 없음

참고로 예전에는 한글로 이름을 정할 수 없었는데 지금은 한글로 정할 수 있어요. 

프로그래밍을 할 때 이름을 대충 정하면 생각이 나지 않아 확인하는 비용도 들어요.
여러 개발자가 같이 개발할 때는 이러한 문제로 예상하지 못한 비용이 추가로 발생하곤 하죠.
많은 개발자들은 서로 이해하기 쉽게 나름의 규칙을 정하여 이름을 결정하고 있어요.

이 책에서는 다음과 같은 규칙으로 이름을 결정할게요.

▶ 변수 명: 명사, 대문자를 사용하지 않음(student)
▶ 형식 명: 명사, 첫자와 의미가 바뀌는 부분은 대문자, 나머지는 소문자(Student)
▶ 함수 명: 동사, 첫자와 의미가 바뀌는 부분은 대문자, 나머지는 소문자(Study)
               일반적으로 사용 가능한 함수일 때는 소문자로만 정의
▶ 매크로 : 명사, 소문자를 사용하지 않음(MAX_STUDENT)  

다음은 이 책에서 사용하는 명명법을 보여주는 코드예요.
아직 다루지 않은 문법들도 포함하고 있지만 코드의 내용은 큰 의미를 갖고 있지 않아요.
또한 개발자에 따라 명명하는 방법은 차이가 있을 수 있어요.
대표적인 명명법에는 낙타의 등, 헝가리식 표기법, 파스칼 방식 등이 있죠.
다른 개발자들이 많이 사용하는 방법이니 한 번 확인해 보시고 경험 지식을 활용하는 것도 좋은 방법이예요.

◈ 이 책에서 사용하는 명명법
//이 책에서 사용하는 명명법 - 개발자에 따라 다를 수 있음
#include <stdio.h>

#define MAX_STUDENT     50 //매크로 상수 - 명사, 소문자를 사용하지 않음
typedef int Score; //타입명 - 명사, 첫자와 의미가 바뀌는 부분만 대문자

Score CalculateScore(); //함수명 - 동사, 첫자와 의미가 바뀌는 부분만 대문자
int main()
{
    Score score; //변수명 - 명사, 대문자를 사용하지 않음

    score = CalculateScore();
    printf("score:%d \n",score);
    return 0;
}
Score CalculateScore()

{
    return 90;
}


◈ 기본연습 (정답 바로가기)
다음에서 개발자가 정할 수 없는 이름과 정할 수 있는 이름을 구별해 보시오.
Compare, int, 3_number, Number_3, AIEB_aide_34, num_!8, num 8