본문 바로가기
Java

[Java] 변수의 명명규칙과 네이밍컨벤션

by seonggu 2022. 12. 13.

1️⃣ 변수의 명명규칙

'변수의 이름'처럼 프로그래밍에서 사용하는 모든 이름을 '식별자(identifier)'라고 하며, 식별자는 같은 영역 내에서 서로 구분(식별) 할 수 있어야한다. 그리고 식별자를 만들 때는 아래와 같은 규칙을 지켜야 한다고 한다.


1. 대소문자가 구분되며 길이에 제한이 없다.

- True와 true는 서로 다른 것으로 간주된다.

 

2. 예약어를 사용해서는 안된다.

- true는 예약어라서 사용할 수 없지만, True는 가능하다.

 

3. 숫자로 시작해서는 안된다.

- top10은 허용하지만, 7up은 허용되지 않는다.

 

4. 특수문자는 '_'와 '$'만을 허용한다.

- $harp은 허용되지만, S#arp은 허용되지 않는다.

 

여기서 3번 예약어는 키워드(keyword) 또는 '리져브드 워드(reserved word)'라고 하는데, 프로그래밍 언어의 구문에 사용되는 단어를 뜻한다. 그래서 예약어는 클래스나 변수메서드의 이름 (identifier)으로 사용할 수 없다. 
아래는 java에서 사용되는 예약어 목록들이다.

출처 : http://wiki.hash.kr/

✅ 자바 프로그래머에게 권장하는 규칙들

1. 클래스 이름의 첫 글자는 항상 대문자로 한다.

- 변수와 메서드의 이름의 첫 글자는 항상 소문자로 한다.

2. 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.

- lastIndexOf, StringBuffer

3. 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분한다.

- PI, MAX_NUMBER

 

✅ 자바에서는 모든 이름에 유니코드를 포함하여 문자들을 사용할 수 있지만, 적어도 클래스 이름은 ASCII코드(영문자)로 사용하는 것이 좋다. 유니코드를 인식하지 못하는 OS들도 있기 때문이다.


2️⃣ 네이밍컨벤션 (naming convention)

정의 :  특정한 방식으로 파일 이름을 지정하는 데 사용되는 프레임워크를 나타낸다.
이는 organization 전체에 걸쳐 기술적이고 일관성이 있어야 한다. 파일의 내용을 설명할 때는 항상 명명 규칙을 사용하는 것이 좋다. 일반적으로 파일 명명 규칙은 데이터 수집을 시작하기 전에 시작해야 한다. 이렇게 하면 잘못 배치될 가능성이 높은 무작위로 명명된 비정형 콘텐츠의 백로그를 방지할 수 있다.

 

어디에 사용될까❓ 대량의 데이터를 수집하고 저장하는 모든 장소에 권장이 된다. 

파일링 시스템, 데이터베이스, 프로그래밍, 소프트웨어 개발 등에 사용할 수 있다. IT documentation에서 file naming convention을 사용하는 경우 설명서를 소프트웨어를 사용하기 시작하는 즉시 배포를 해야한다. 

 

네이밍 컨벤션의 목적 : 소스 코드를 읽고 이해하는 데 드는 시간을 절약한다. (가독성)

개발자와 분석가가 시스템 수행 작업 및 소스코드를 수정, 확장 등의 경우 적용하는 방법을 보다 쉽게 이해할 수 있게 한다.

a = b * c; // 좋지 않은 예시 각 변수가 의미하는 것을 파악하기 힘들다.
wages_per_day = hours * hourly_wage; // 하루 임금을 위한 변수들 임을 알 수 있다.

 

✅ 네이밍 컨벤션의 대표적 케이스

1. 카멜 표기법 - Camel Case

카멜(Camel)은 낙타라는 의미를 가지고 있으며 카멜 표기법은 낙타의 혹처럼 생겼다고 하여서 이런 명칭을 사용한다.

대부분 자바(Java)에서 사용을 많이 한다. 보통 Camel Case 라고 하면 Lower Camel Case를 의미한다.

아래와 같이 처음에는 소문자로 시작하여 2번째 단어부터는 대문자로 시작하는 것을 볼 수 있다. 조합하는 단어는 보통 명사를 사용해야 하지만 메서드에서는 첫번째 시작하는 단어는 동사로 시작하는 것을 권장하고 있다.

int teamScore;

public void getTeamScore(int teamScore) {
	return teamScore;
}

 

2. 파스칼 표기법 - Pascal Case

카멜 표기법과 달리 처음 글자도 대문자로 시작한다. 그리하여 이 표기법을 쌍봉낙타(혹이 2개 달린) 표기법이라고도 불린다. Upper Camel Case라고도 한다. 자바(Java)와 파이썬(Python)에서 사용한다.

public class ArticleService {
	...
}

 

3. 헝가리안 표기법 - Hungarian Notation

변수명 앞에 자료형을 붙이는 방법이다. C언어에서 주로 쓰였지만 최근에 지양한다고 한다. 다른 언어와 달리 C에서는 사용자가 정의(메모리 할당/해제) 자료형이 명확한 것이 중요하다. 하지만 이 방식은 자료형이 바뀌면 네이밍도 다 바꿔야하는 단점이 존재하므로 카멜이나 스네이크와 같은 표기법으로 넘어가는 추세라고 한다.

int iBook = 10;
str strName = "홍길동";

 

4. 스네이크 표기법 - Snake Case

기어다니는 뱀에 형상을 따온 것으로 모두 소문자로 쓰되 단어간의 구분은 밑줄로 대체하는 방식이다. 

C, C++, Python, R 등에서 사용한다. Java에서도 전역변수나 상수 등은 다른 언어와 구분하기 위해 스네이크를 사용하기도 한다.

team_score = 10
user_name = '홍길동'

 

5. 케밥 표기법 - Kebab Case

케밥에서 꼬치 모양을 딴 것으로 전반적으로 스네이크와 유사하지만 언더바이스(_) 대신 하이픈(-)을 사용한다.

대부분의 언어들이 하이픈 지원을 하지 않기 때문에 사용하는 언어는 주로 CSS에서 사용한다고 한다. 또한, properties에 값을 설정하거나 일부 HTML에서는 사용을 한다.

button {
  font-family: "Noto Sans KR", sans-serif;
  font-size: 1rem;
  font-weight: 400;
  text-align: center;
  text-decoration: none;
}

 

✅ Java Naming Convention

1. 클래스(Class), 인터페이스(Interface)

대문자로 시작하고 명사를 사용한다.

예시 - Class : Car

Interface : Person

 

2. 메서드 (Method)

메서드는 소문자로 시작하고 동사를 사용한다. 이때 두 단어 이상 사용할 경우 카멜 케이스(Camel Case)를 사용한다.

예시 - void changeAnimal

 

3. 변수 (Variables)

소문자로 시작하며 i, j, k, m, n, c, d, e와 같은 임시변수를 제외하면 한 글자는 지양한다.

예시 - String name = "홍길동";

 

4. 상수(Constant)

상수는 모든 글자에 대문자를 사용한다. 여러 단어를 연결시에는 _를 사용한다.

예시 - final int MAX_VALUE = 100;

 

5. 패키지 (Package)

패키지는 모두 소문자를 사용할 것을 권장한다.

예시 - package algorithm

 

간단한 정리정도는 이정도를 하고 아래에 캠퍼스 핵데이 Java Conding Convention을 참고하자.

https://naver.github.io/hackday-conventions-java/

 

캠퍼스 핵데이 Java 코딩 컨벤션

중괄호({,}) 는 클래스, 메서드, 제어문의 블럭을 구분한다. 5.1. K&R 스타일로 중괄호 선언 클래스 선언, 메서드 선언, 조건/반복문 등의 코드 블럭을 감싸는 중괄호에 적용되는 규칙이다. 중괄호

naver.github.io

 

 

참고자료 -

더보기

자바의 정석 3판 

https://zetawiki.com/wiki/

https://bmind305.tistory.com/45

https://needjarvis.tistory.com/632

https://www.itglue.com/blog/naming-conventions-examples-formats-best-practices/

 

같이 스터디하는 팀원이 공유해준 자료

https://woonjangahn.gitbook.io/logs/techcourse/coding-convention

 

팀 코딩 컨벤션 정립하기 - 호돌록

혼자 모든 것을 만들어내는 사람보다는 함께 만드는 사람들이 더 많을 것이다. 그래서 프로젝트를 진행하며 서로 코드 리뷰를 하고, 함께 고민하고, 서로 부족한 부분을 채워주며 발전한다. 코

woonjangahn.gitbook.io

새로이 프로젝트를 하거나 팀 단위의 코딩을 하게 되면 같이 읽어보고 규약을 정립하는 것이 좋을 것 같다.

 

image - 

https://www.flaticon.com/kr/free-icon/rename_6077595?term=%EC%9D%B4%EB%A6%84&page=1&position=16&page=1&position=16&related_id=6077595&origin=search