728x90
Java 프로그램을 작성하다 보면 프로젝트의 이름과 패키지 이름, 클래스 이름, 메서드 이름, 변수 이름을 어떻게 작성하면 좋은지 헷갈릴 때가 많았습니다.
그래서 통상적으로 각 요소들의 이름을 짓는 규칙을 찾아서 정리한 후 숙지하고자 글을 작성하게 되었습니다.
협업을 하면서 팀원과 회사 또는 조직에 따라서 명명하는 기준들은 다 다르기 때문에 저는 제일 통상적이고 잘 알려져 있는 방법들을 찾아 정리해 보았습니다.
공통적인 명명 규칙
- 대소문자를 구분한다.
- 예약어를 사용해서는 안 된다.
- 숫자로 시작해서는 안 된다. (뒤에 숫자가 오는것은 가능)
- 특수문자는 '_' ghrdms '$'만 허용한다.
- 파스칼 표기법(PascalCase)과 카멜 표기법(CamelCase)을 사용한다.
- 반의어는 반드시 대응하는 개념으로 사용해야 한다.
Project (프로젝트)
- 대소문자 구분없이 시작 가능하다.
- 대문자 사용을 권장한다.
Package (패키지)
- 패키지 명은 대소문자 모두 가능하지만, 클래스명과 쉽게 구분하기 위해 소문자로 하는 것이 원칙이다.
- 패키지 명명 표준 패턴을 따른다.(주로 회사명이나 도메인등이 유니크하기 때문에 패키지 명으로 많이 사용됩니다. 일반적으로 URL을 반대로 적은 패키지 명을 주로 사용합니다.)
표준 패턴 규칙 : [com].[Company].[Project].[toppackage].[lowerpackage] - 가급적 한 단어를 사용한다.
- 단어 간의 구분은 '.'을 이용한다.
표준 패턴 응용 예시 | 적용 예시 |
1. com.회사이름.폴더명 | com.naver.bloger |
2. kr.co.회사이름.프로젝트 이름 | kr.co.naver.blogproject |
3. kr.co.회사이름.플랫폼.프로젝트 이름 | kr.co.naver.intellij.blogproject |
4. 회사명.플랫폼.프로젝트 이름 | naver.intellij.blogproject |
5. com.회사명.프로젝트 이름. 상위패키지.하위패키지 | com.naver.blogproject.member.object |
Class (클래스)
- 파스칼 표기법(PascalCase)을 사용한다.
- 명사로 시작한다.
파스칼 표기법 (PascalCase)
파스칼 표기법은 모든 단어의 첫 글자를 대문자로 표기하는 방식입니다. 모든단어를 붙여서 사용하되 첫글자를 대문자로 함으로써 단어끼리의 구분을 짓는 방식입니다.
public class UserNumber{ //User + Number => UserNumber }
interface (인터페이스)
- 파스칼 표기법(PascalCase)을 사용한다.
- 형용사를 사용한다.
ex) Runnable, Remote 등
Method (메서드)
- 카멜 표기법(CamelCase)을 사용한다.
- 동사로 시작한다.
카멜 표기법 (CamelCase)
Camel(낙타) 표기법은 말 그대로 낙타의 봉우리 모양처럼 중간이 우뚝 솟아있는 형태를 이야기합니다.
시작하는 첫 글자는 소문자로 시작하고, 두 번째 단어의 첫 글자를 대문자로 표기하는 방식입니다. 단어 간의 공백 없이 대문자를 통해 단어를 구분합니다.
public int userNumber()
- 특정 기능의 메서드명에는 여러 접두사를 붙여 사용한다.
1. 속성에 접근하는 메서드는 접두사 get/set을 사용한다.
//get public void getName() //set public void setName()
2. 데이터를 생성하는 메서드는 접두사 create를 사용한다.
public void createData()
3. 데이터를 조회하는 메서드는 접두사 find를 사용한다.
public void findData()
4. 데이터를 변경하는 메서드는 접두사 modify를 사용한다.
public void modifyData()
5. 데이터를 입력하는 메서드는 접두사 input을 사용한다.
public void inputData()
6. 데이터를 삭제하는 메서드는 접두사 delete를 사용한다.
public void deleteData()
7. 데이터를 초기화하는 메서드는 접두사 init(initialize)를 사용한다.
public void initData()
8. 데이터를 불러오는 메서드는 접두사 load를 사용한다.
public void loadData()
9. 데이터 유무를 확인하는 메서드는 접두사 has를 사용한다.
public void hasData()
10. 반환 값의 타입이 boolean인 메서드는 접두사 is를 사용한다.
public boolean isData()
11. 새로운 객체를 만든 뒤 해당 객체를 리턴해주는 메서드는 접두사 create를 사용한다.
public void createAccount()
12. 해당 객체를 다른 형태의 객체로 변환해 주는 메서드는 접두사 to를 사용한다.
public void toString()
13. 해당 객체가 복수인지 단수인지 구분하는 메서드는 접미사 s를 사용한다.
public void getAccounts()
14. B를 기준으로 A를 하겠다는 메서드는 전치사 By를 사용한다.
public void getUserByName()
Variable (변수)
- 카멜 표기법(CamelCase)을 사용한다.
ex) firstName, secondNum 등
Constant (상수)
- 스네이크 표기법(SnakeCase)으로 표기한다.
- 전부 대문자로 표기한다.
스네이크 표기법 (SnakeCase)
스네이크 표기법은 밑줄 '_'을 사용한 모습이 뱀 같아서 붙여진 이름입니다. 단어와 단어 사이를 '_'을 이용하여 구분하는 표기법입니다.
// 스네이크 표기법을 사용한 상수 final int MAX_NUMBER; final double PI;
Reference
- 황기태, 김효수, 명품 Java Programming. 생능출판, 2019
- Velog, "[Spring/Java] 프로젝트, 패키지, 클래스, 메서드 명명 규칙", 글 주소
[Spring/Java] 프로젝트, 패키지, 클래스, 메서드 명명 규칙
대소문자 구분예약어 X숫자로 시작 X특수문자는 \_ 혹은 $ 만 허용파스칼 표기법과 카멜 표기법을 사용반의어는 반드시 대응하는 개념으로 사용대소문자 구분없이 시작 가능대문자 사용을 권장
velog.io
- Tistory, "[Java] (Project, Package, Class, Method) Naming 규칙", https://dkswnkk.tistory.com/539
[Java] (Project, Package, Class, Method) Naming 규칙
공통 대소문자가 구분되며 길이에 제한이 없다. 예약어를 사용해서는 안 된다. 숫자로 시작해서는 안 된다. 특수문자는 '_' 혹은 '$'만 허용한다. 파스칼 표기법(PascalCase)과 카멜 표기법(camelCase)을
dkswnkk.tistory.com
- NaverBlog, "Java 명명법 (패키지, 클래스, 변수, 메소드) <Java 기초강의 -5>", https://blog.naver.com/cih468/221338140894
Java 명명법 (패키지, 클래스, 변수, 메소드) <Java 기초강의 - 5>
아직 자바에 대해서는 초보인 제가 kh정보교육원에서 자바 강의를 들으면서 알게된 점들을 정리해서 올리는...
blog.naver.com
728x90
'수수한 코딩세상 > Java' 카테고리의 다른 글
[Java][Error] Prohibited package name 문제해결 (1) | 2024.08.05 |
---|---|
[Java] Java에서 this 와 this()란 무엇인가 (1) | 2024.08.04 |
[Java] 호출 방식으로 알아보는 인스턴스 멤버 & 클래스 멤버 차이 (1) | 2024.07.31 |
[Java] 문자열(String)로 알아보는 == 연산자와 equals() 메서드 차이 (0) | 2024.07.29 |
[Java] 자바에서 입력 받는 방법 System.in & Scanner 클래스 (0) | 2024.07.26 |