<식별자>
뒤에 가서 배우겠지만
프로그래밍에서 변수 말고도
클래스, 메서드, 상수 등 많은 식별자(identifier)가 존재한다.
식별자는 같은 영역 내에서
서로 구분(식별) 될 수 있어야 하므로
식별자에 이름을 붙일 때 다음과 같은 규칙을 지켜야 한다.
<식별자의 명명규칙>
1. 대소문자가 구분되며 길이에 제한이 없다.
실제로 대소문자 구분때문에 에러가 많이 발생한다.
"똑같은 코드를 쳤는데 왜 나는 컴파일 에러가 나지?"
많은 빈도로 오타와 대소문자 구분 때문인 경우가 많다.
System ≠ system ≠ sYstem ≠systeM
2. 예약어는 사용해서는 안 된다.
예약어는 키워드(keyword) 또는 리져브드 워드(reserved word)하고 하는데,
프로그래밍언어의 구문에 사용되는 단어를 뜻한다.
말 그대로 사용이 예약된 단어로써,
식별자로 사용할 수가 없다.
위와 같이 True는 변수이름으로 사용할 수 있으나
true는 예약어이기 때문에 변수이름으로 사용할 수 없어
eclipse에서는 예약어 true를 입력하자마자 보라색으로 바꾸면서
컴파일 에러를 표시한다.
즉, 위 사진에서 보라색인 글자들
public, class, static, void, int, true는 전부 예약어인 것이다.
그밖에도 java에서 사용하는 예약어는 굉장히 많으며
JDK 새로운 버전이 출시될 때 예약어가 추가 되기도 한다.
3. 숫자로 시작해서는 안 된다.
변수이름을 숫자로 시작하려고 하면
아래와 같이 eclipse에서는 컴파일 에러를 표시한다.
클래스이름 또한 만들수 없도록 오류를 표시한다.
4. 특수문자는 언더바(_)와 달러($)만을 허용한다.
언더바(_)와 달러($)를 제외한 특수문자는
위와 같이 식별자의 이름으로 쓰려고 하면
eclipse에서 컴파일 에러를 표시한다.
추가로 한글 자음키를 누르고 한자키를 눌러서 사용하는 특수기호도
식별자의 이름에 사용할 수 없다.
식별자 이름으로 언더바(_)를 포함해서 사용하는 것은 가능하나,
식별자 이름으로 언더바(_)만 사용하면
'_' should not be used as an identifier, since it is a reserved keyword from source level 1.8 on
라는 경고 표시를 띄우며 식별자의 이름으로 사용하지 않도록 경고한다.
참고로 언더바(_)와 달러($)의 사용이 가능한 이유는
다른 프로그래밍 언어와의 호환성을 위해서 포함되었기 때문이다.
꼭 필요한 경우가 사용하지 않는 것이 좋다.
비트 유니코드를 지원하므로 (비트 유니코드는 이후에)
한글도 식별자로 사용 가능하긴 하나, 비권장한다.
위 네가지는 꼭 지켜야 하는 규칙이다.
추가로 필수는 아니지만 권장하는 규칙들이 있다.
<식별자 명명규칙 2>
1. 클래스 이름의 첫 글자는 항상 대문자로 한다.
2. 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
이는 쌍봉낙타 표기법이라고도 불리는
파스칼 표기법(PascalCase)을 따르는 것으로
첫 문자를 대문자로 표기하고,
그 다음 문자도 대문자로 표기한다.
(ex. HelloWorld)
아직 클래스에 대해 공부하진 않았지만
이 규칙으로 그동안 뜻도 모르고 사용한 명령어들을 보고
눈치 챌 수 있는 부분이 있다.
내가 만든 Variable12과 마찬가지로
String과 System도 클래스인 것이다.
자세한 것은 이후에 공부해보자.
3. 변수와 메서드 이름의 첫 글자는 항상 소문자로 한다.
이는 단봉낙타 표기법이라고도 불리는
카멜 표기법(camelCase)을 따르는 것으로,
첫 문자를 소문자로 표기하고,
그 다음 문자부터는 대문자로 표기한다.
(ex. helloWorld)
그동안 eclipse를 사용하여 변수에 대해 공부하면서
눈치를 챘던게 있다면 변수를 ■갈색으로 바꾼다는 것이다.
내가 만든 변수 a와 마찬가지로
args도 변수인 것이다.
자세한 것은 이후에 공부해보자.
보라색으로 변한 예약어와 파란색으로 변한 out을 제외하고
소문자로 시작하는 단어 중 갈색이 아닌 단어를 보면
main과 prinln이 있는데 이는 메서드이다.
자세한 것은 이후에 공부해보자.
4. 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우, 언더바(_)로 구분한다.
스네이크 표기법(snake_case)을 따르는 것으로
한 문자마다 언더바(_)를 붙여 이어나가는 표기법을 말한다.
(ex. PI, MAX_NUMBER)
(상수는 이후에 배운다.)
5. 변수의 이름이 길다면 축약한 뒤, 주석을 이용해 변수에 대한 정보를 남긴다.
예로 다음과 같이 변수를 선언할 수 있다.
int curPos = 0; // 현재위치(current Position)
int lastPos = -1; // 마지막 위치(last Position)
가독성을 위해 필요한 경우 사용할 수 있지만.
의미 전달이 더욱 중요하기 때문에
꼭 필요한 경우가 아니라면 축약하지 않는 것이 좋다.
만약 변수 이름이 길어 코드 작성의 번거로움 때문에 축약을 하려한다면,
eclipse에서는 선언한 변수를 쉽게 검색해주는 기능이 있으니 참고하자.
위 5가지 명명규칙은
대부분의 개발자들이 지키는 암묵적인 약속이므로
식별자의 명명규칙과 함께 지켜야 한다.
내가 작성한 코드를 다른 개발자가 해석해야 할 때
다른 개발자가 작성한 코드를 내가 해석해야할 때
훨씬 수월할 것이다.
만일 특별한 방식으로 식별자를 작성해야 한다면
미리 규칙(coding convention)을 정해놓고
프로그램 전체에 일관되게 적용하는 것이 필요하다.
실제로 특별한 방식으로 식별자를 작성해야 하는 프로젝트를 받게 된다면
해당 프로젝트에서 사용할 규칙을 정리해둔 문서도 함께 받게 될 것이다.
여기까지 정리하자면,
식별자의 명명규칙 다음과 같다.
1. 대소문자가 구분되며 길이에 제한이 없다.
2. 예약어는 사용해서는 안 된다.
3. 숫자로 시작해서는 안 된다.
4. 특수문자는 언더바(_)와 달러($)만을 허용한다.
추가적으로
1. 클래스 이름의 첫 글자는 항상 대문자로 한다.
2. 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
3. 변수와 메서드 이름의 첫 글자는 항상 소문자로 한다.
4. 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우, 언더바(_)로 구분한다.
도 함께 지키자.
'. Java의 정석' 카테고리의 다른 글
[Java] 개발자가 알아두면 좋은, 숫자 영어 접두사 (0) | 2021.07.01 |
---|---|
[Java] 데이터 타입의 필요성 (0) | 2021.07.01 |
[Java] 변수의 값 교환, tmb (0) | 2021.07.01 |
[Java] 변수의 사용, System.out.println(); 단축키, 더하기부호(+) (0) | 2021.07.01 |
[Java] 변수의 초기화(할당), 대입연산자(=) (0) | 2021.07.01 |