본문 바로가기
백엔드/Java

Code Convention

by david100gom 2024. 3. 31.
728x90

1.  Naming Rule 

1)  메소드

- 동사 + 명사의 형태이며 메소드 명의 첫 캐릭터는 소문자로 기술한다.

- 동사 + 명사1 + 명사2 의 형태처럼 동사 뒤의 단어들이 반복되는 경우 각 단어의 첫 캐릭터는 대문자.

 
getData();
getCustomerData();

       

2)  상수

- final, define, const로 선언되는 상수는 "_"(under bar)로 구분된 대문자로 정의.

private static final String SERVER_ADDRESS = "192.0.0.1";
 

3)  변수

- DB table 필드, Request parameter 와 1:1 매핑 되는 변수는 해당 명명규칙을 따르되 첫 글자는 소문자이고 ‘_’로 구분되는 경우는 대문자로 구분한다.

DB 필드명 : user_id   ->   변수명 : userId

-첫문자가 소문자 두번째가 대문자의 경우(mSeq) GET / SET 메소드가 아래와 같이 생성된다.

private String mSeq;

public String getmSeq() {
    return mSeq;
}

public void setmSeq(String mSeq) {
    this.mSeq = mSeq;
}
///
  
private String msSeq;

public String getMsSeq() {
    return msSeq;
}

public void setMsSeq(String msSeq) {
    this.msSeq = msSeq;
}
 

- 도메인 클래스

  • DB 필드 Integer 나 int 경우 도메인 클래스내 변수를 int 로 선언 

 

4)  클래스 패키지 경로

- 프로젝트명이 gm 인 경우 

자바 패키지명

com.groundx42.gm.aop                -> AOP 관련 패키지
com.groundx42.gm.common             -> common 관련 패키지
com.groundx42.gm.excetion           -> exception 관련 패키지
com.groundx42.gm.framework          -> framework 관련 패키지
com.groundx42.gm.interceptor        -> 인터셉터 관련 패키지
com.groundx42.gm.process            -> 업무 프로세스 관련 패키지

- com.groundx42.gm.process.서비스명.업무분류.패키지.클래스명

예) 회원서비스라면

com.groundx42.gm.process.member.web.MemberController               -> Member Web Controller 클래스
com.groundx42.gm.process.member.mobile.MobileMemberController      -> Member Mobile Controller 클래스 (prefix)
com.groundx42.gm.process.member.service.MemberService              -> Member 비즈니스 로직 인터페이스
com.groundx42.gm.process.member.service.MemberServiceImpl          -> Member 비즈니스 로직 클래스
com.groundx42.gm.process.member.domain.Member                      -> Member 도메인 클래스
com.groundx42.gm.process.member.dao.MemberDAO                      -> Member DAO 인터페이스
com.groundx42.gm.process.member.dao.MemberDAOImpl                  -> Member DAO 클래스

5)  Controller 클래스 명 및 mapping 경로

- 모든 Controller 클래스 명에는 끝에 Controller 을 붙인다.

 
LoginController     -> Login 관련 Controller
MemberController    -> Member 관련 Controller

- Controller 클래스의 mapping 경로는 recruit 의 경우 패키지경로에서 여섯번째 경로까지를 생략하고 나머지를 경로로 기술한다. 

- 클래스 mapping 명은 소문자로 시작한다.

- mapping 경로의 경우 클래스 명 끝의 Controller 는 생략한다.

 
com.groundx42.gm.process.recruit.member.controller.LoginController 인 경우 :  /member/login       -> http://recruit.groundx42.com/member/login.do
com.groundx42.gm.process.recruit.member.controller.MemberController 인 경우 : /member/member  -> http://recruit.groundx42.com/member/member.do

6)  Service / DAO / 도메인 클래스

- Service 와 DAO 클래스는 업무분류 를 접두사로 사용하고, 도메인 클래스는 DB 테이블명을 클래스 명으로 사용한다.

- 인터페이스 명 끝에 Service / DAO 를 붙인다.

- 클래스 명 끝에 ServiceImpl / DAOImpl 를 붙인다.

MemberService           -> Member 비즈니스 로직 인터페이스
MemberServiceImpl       -> Member 비즈니스 로직 클래스
MemberDAO               -> Member DAO 인터페이스
MemberDAOImpl           -> Member DAO 클래스
Member                  -> Member Domain 클래스 (DB 테이블명 동일하게 맞춘다)

7)  mybatis sqlmap 폴더

- 메이븐 생성 폴더 java 폴더와 동일 레벨에 sqlmap 폴더를 생성한다.

 
src/main/java                           -> 메이븐 자바 폴더
src/main/sqlmap/member/memberDAO.xml    -> Member 관련 sql xml 문

8)  메이븐 resources 설정

 
src/main/resources-dev      -> 개발 환경 리소스 폴더
src/main/resources-local    -> 로컬 개발 환경 리소스 폴더
src/main/resources-prod     -> 실 서비스 환경 리소스 폴더

9)  Layout 

- 파일 경로는 /_freemarker/_layout 경로를 베이스로 한다.

- 기본 layout 파일명은 _서비스명_서비스역할_layout.ftl

- 파일명은 소문자를 사용하고 단어간의 사이에는 ‘_’ 문자로 구분한다.

/_layout/default_layout.ftl
/_layout/header_layout.ftl
/_layout/footer_layout.ftl

10)  View (JSP or FTL)

- 파일 경로는 /_freemarker/_template 경로를 베이스로 하며, 해당  클래스의 패키지 경로의 네번째 명부터의 경로와 일치시킨다.

- 파일명은 소문자를 사용하고 단어간의 사이에는 ‘_’ 문자로 구분한다.

- freemarker 파일 확장자는 *.ftl로 설정한다.

com.groundx42.gm.process.recruit.member.controller.MemberController 클래스에 대한 view 경로    -> /_freemarker/_template/member/member_list.ftl

11) Spring 설정 파일 구조

-    spring-서비스명-역할-config.xml 로 명명한다.

src/main/resources-prod/conf/mybatis/sqlMapConfig.xml               -> mybatis mapper 설정 파일
src/main/resources-prod/conf/prop/xx.properties                     -> properties 설정 파일
src/main/resources-prod/conf/spring/applicationContext-jdbc.xml     -> JNDI 설정 + sqlMapConfig.xml 설정 파일
src/main/resources-prod/conf/spring/default-servlet.xml             -> spring 설정 파일

 

12) 기타 Java Code Convention

- 기타 Java Code Convention 과 관련한 내용은 아래의 경로를 참조한다.

http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html

 

13) 주석 다는 방법 / Copyright

 주석은 명사로 시작해서 동사로 끝낸다.

예) 회원 정보를 저장한다.

 

728x90

'백엔드 > Java' 카테고리의 다른 글

알고리즘  (0) 2024.04.16
Network  (0) 2024.03.31
look like  (0) 2024.03.21
스프링 RestuFul API 에서 PUT / DELETE 메소드 가능하게 하는방법  (0) 2024.03.20
RestFul URL 패턴 주의점.  (0) 2024.03.20
메세지 컨버터  (0) 2024.03.20
다중 transactionManager  (0) 2024.03.20
Spring AOP  (0) 2024.03.20

댓글