소프트웨어를 제작할 때는 협업과 유지보수를 위한 다양한 방법론을 활용하곤 한다. 이러한 방법론은 여러가지가 있겠지만, 여기서는 변수명 규약에 대해 설명한다. 한 프로젝트 내에서는 모두 동일한 규약아래에서 변수 이름을 짓도록 하여, 코드의 가독성을 높이는 등의 효율성을 가져오도록 하는 방법이다. 변수명 규약에는 가장 널리 사용되는 방법이 3가지가 있는데, 그것은 아래와 같다.
- 헝가리안 표기법
- 파스칼 케이싱(Pascal Casing)
- 카멜 케이싱(Camel Casing)
각 규약을 간략하게 소개하면 아래와 같다.
헝가리안 표기법
int자료형 + apple -> intApple
Microsoft의 헝가리인 개발자가 사용하던 변수명 규약이다.
변수의 자료형을 변수명의 접두어로 붙이는 방식이다. 예를 들어 int형의 ‘number’라는 변수를 선언하고자 할 때는, ‘intNumber’ 라고 정하는 식이다. 또 다른 예를 들자면 문자열인 ‘name’이라는 변수를 선언하고자 할 때는 ‘strName’과 같이 지정할 수 있다.
* 최근들어 IDE의 발달로 인해 변수에 커서만 가져다대도 해당 변수의 각종 정보를 툴팁형태로 보여주는 기능을 지원해주고 있다. 따라서 굳이 헝가리안 표기법을 사용하는 것이 프로젝트 진행의 효율성을 이끌어낼 수 있다고 보기는 어려울 것 같다.
Camel Casing
apple + tree -> appleTree
소문자를 기본으로 사용하되, 구분되는 단어를 대문자로 연결하는 방식이다. 그러나 첫 단어의 첫 글자는 소문자를 사용한다. 예를 들어 ‘appletree’라는 함수를 작성한다고 가정하면, 함수의 이름을 ‘appleTree()’라고 선언하는 방식이다.
Pascal Casing
apple + tree -> AppleTree
파스칼 케이싱또한 Camel Casing과 같이 소문자를 기본으로 사용하되, 구분되는 단어를 대문자로 연결하는 방식이다. 그러나 첫 글자도 대문자를 사용한다는 점이 Camel Casing과의 차이점이다. 예를 들어 ‘appletree’라는 클래스를 작성한다고 가정하면, 클래스의 이름을 ‘AppleTree’라고 선언하는 방식이다.
Widipedia에서는 Pascal Case를 CamelCase항목에서 함께 다루고 있다. 대부분이 CamelCase와 같으나, 첫 글자도 대문자로 시작한다는 차이점밖에 없기 때문이다.
Java에서의 명명 규칙
현재 .Net과 J2EE에서 각각 C#이나 Java로 소프트웨어를 개발할 때 사용하기를 권장하는 이름 규칙은 Camel Casing과 Pascal Casing 두 가지를 혼용하고, 여기에 별도의 규칙을 적용하여 사용하고 있다. 그 중 J2EE에서 제시하는 명명 규칙에 대해 간단히 소개해보겠다.
Java에서는 컴파일러 자체가 제한하는 규칙과 J2EE에서 권장하는 규칙이 있다.
· 컴파일러 자체가 제한하는 규칙은 아래와 같다.
- 대소문자가 구분되며, 길이에 제한이 없다.
- Tree’와 ‘tree’는 서로 다른 것으로 간주한다.
- 예약어를 사용해서는 안된다.
- ‘true’는 예약어 이기 때문에 사용할 수 없으나 ‘True’는 사용할 수 있다.
- 숫자로 시작해서는 안된다.
- ‘num10′은 가능하지만, ’10num’은 사용할 수 없다.
- 특수문자는 ‘_’와 ‘$’만 사용할 수 있다.
- ‘_tree’나 ‘$tree’는 사용할 수 있으나, ‘#tree’와 같은 이름은 사용할 수 없다.
· J2EE에서 권장하는 규칙은 아래와 같다.
- 클래스 이름의 첫 글자는 항상 대문자이어야 한다.
- 변수와 메서드의 이름 첫 글자는 소문자이어야 한다.
- 여러 단어로 이루어진 이름인 경우 각 단어의 첫 글자를 대문자로 한다.
- 상수의 이름은 모두 대문자로 한다. 또한 여러 단어로 이루어진 상수의 경우 각 단어를 ‘_’(언더바)로 구분한다.
위에서 설명한 바와 같이 각 언어 진영에서 제시하는 명명규칙이 있는가 하면, 회사마다 자신들만의 명명규칙을 정해 사용하기도 한다. 그러나 대부분이 Camel Case와 Pascal Case를 기본 뼈대로 하여 명명규칙을 정하게 된다. 이 규칙이 공식적 표준 규약은 아니지만, 프로그래밍 세계에서의 비공식적인 업계표준과 같은 역할을 하게 되어 어디에서도 이해하기 편리하기 때문이다.
'IT > JAVA' 카테고리의 다른 글
AES-256 암호화 시 주의 사항 (0) | 2014.04.30 |
---|---|
한글 변환 처리 (0) | 2013.12.21 |
Fetch Call 최소화 (0) | 2013.12.21 |
Java 성능 향상 팁 (0) | 2013.12.21 |
properties file 한글 깨짐 현상 해결 방법 (0) | 2013.12.21 |