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
주석은 명사로 시작해서 동사로 끝낸다.
예) 회원 정보를 저장한다.
'백엔드 > Java' 카테고리의 다른 글
메뉴기반 권한 관리 DB 스키마와 쿼리 (0) | 2024.10.26 |
---|---|
Spring Security 설정 기반 권한 관리 vs 데이터베이스 기반 권한 관리 (0) | 2024.10.21 |
알고리즘 (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 |
댓글