Backend
home
✍🏻

2. 이름 (Naming)

2.1. 식별자에는 영문/숫자/언더스코어만 허용

[identifier-char-scope]
변수명, 클래스명, 메서드명 등에는 영어와 숫자만을 사용한다. 상수에는 단어 사이의 구분을 위하여 언더스코어(_)를 사용한다. 정규표현식 `[^A-Za-z0-9_]`에 부합해야 한다.

2.2. 한국어 발음대로의 표기 금지

[avoid-korean-pronounce]
식별자의 이름을 한글 발음을 영어로 옮겨서 표기하지 않는다. 한국어 고유명사는 예외이다.
나쁜 예 : moohyungJasan (무형자산)
좋은 예 : intangibleAssets (무형자산)

2.3. 대문자로 표기할 약어 명시

[list-uppercase-abbr]
클래스명, 변수명에 쓰일 단어 중 모든 글자를 대문자로 표기할 약어의 목록을 프로젝트별로 명시적으로 정의한다.
약어의 대소문자 표기는 JDK의 클래스나 라이브러리들 사이에서도 일관된 규칙이 없다. `javax.xml.bind.annotation.XmlElement`처럼 약어를 소문자로 표기하기도 하고, `java.net.HttpURLConnection`처럼 한 클래스 안에서 단어별로 다르게 쓰기도 했다. 그러나 단일 프로젝트에서는 규칙이 명확하지 않으면 같은 단어의 조합을 다른 이름으로 표기할 수 있어서 혼동을 유발한다.
약어가 클래스명에서 대문자로 들어가면 단어 간의 구분을 인지하기에 불리하다. 약어가 연속된 경우 더욱 가독성을 해친다. 예를 들면 XMLRPCHTTPAPIURL과 같은 경우이다. 그래서 기본 정책으로는 약어의 중간단어를 소문자로 표기하고 프로젝트별로 모두 대문자로 표기할 약어의 목록을 명시하는 방식이 가독성을 높이고 규칙을 단순화하는데 유리하다. 즉 프로젝트 내에서 정의한 단어 목록이 없다면 'XmlRpcHttpApiUrl’과 같이 쓴다.
좋은 예
HTTP + API + URL 의 클래스 이름의 경우
대문자로 표기할 약어의 목록을 정의하지 않는 경우 : HttpApiUrl
API만 대문자로 표기할 약어의 목록에 있을 경우 : HttpAPIUrl
HTTP, API, URL이 대문자로 표기할 약어의 목록에 있을 경우 : HTTPAPIURL

2.4. 패키지 이름은 소문자로 구성

[package-lowercase]
패키지 이름은 소문자를 사용하여 작성한다. 단어별 구문을 위해 언더스코어(_)나 대문자를 섞지 않는다.
나쁜 예
package com.navercorp.apiGateway package com.navercorp.api_gateway
Java
복사
좋은 예
package com.navercorp.apigateway
Java
복사

2.5. 클래스/인터페이스 이름에 대문자 카멜표기법 적용

[class-interface-lower-camelcase]
클래스 이름은 단어의 첫 글자를 대문자로 시작하는 대문자 카멜표기법(Upper camel case)을 사용한다. 파스칼표기법(Pascal case)으로도 불린다.
나쁜 예
public class reservation public class Accesstoken
Java
복사
좋은 예
public class Reservation public class AccessToken
Java
복사

2.6. 클래스 이름에 명사 사용

[class-noun]
클래스 이름은 명사나 명사절로 짓는다.

2.7. 인터페이스 이름에 명사/형용사 사용

[interface-noun-adj]
인터페이스(interface)의 이름은 클래스 이름은 명사/명사절로 혹은 형용사/형용사절로 짓는다.
좋은 예
public interface RowMapper { public interface AutoClosable {
Java
복사