Java ConventionTeam Convention테스트 메소드 이름예외처리DTO 네이밍Converter주석Database 패키지 구조(미정) ValidationDocumentationCommit ConventionPR, Issue Convention
Java Convention
- Naver Convention
- CheckStyle 사용해 빌드 할 때 검사
CheckStyle Reference
Team Convention
테스트 메소드 이름
- 한글로 명시해서 사용하자.
- 테스트 클래스에 DisplayName으로 한글명 처리하기.
@DisplayName("지출 api 통합/인수 테스트") class ExpenditureControllerTest{ }
예외처리
- 에러 메시지 내용
- 프론트랑 협의해서 정하자
- 핸들러 단위
- 1개의 GlobalExceptionHandler 로 처리
- 커스텀 Exception
- 최대한 존재 하는 예외를 사용하고, 없을 때 커스텀을 추가해서 사용하자
- 예외처리 핸들러 위치
- 클래스 위치 :
../exception/handler
DTO 네이밍
- [Create | Update | Find | Delete] + [도메인 이름] + [Request or Response]
- ex)
CreateUserRequest
,UpdateUserResponse
Converter
- Dto안에서 책임진다.
- Entity에는 포함시키면 안됨.
ex) Request
class CreateUserRequset{ public User toEntity(){ return user; } }
ex) Response
class CreateUserResponse{ public static CreateUserResponse of(User user){ return new CreateUserResponse(user.get...); } }
주석
주석이 필요한 경우 추가하기
@Service @Transational(readOnly=true) public class UserService { ... /** * 로그인하는 메서드 * @param email (이메일) * @param password (비밀번호) * @return ResponseLoginUser */ public ResponseLoginUser login(String email, String password) { ... } }
Database
- FK 이름 설정 -
fk_현재테이블_참조하는테이블
- 실제 fk에서 문제가 생겼을때 문제 생긴 fk의 이름을 지정해주지 않아서 찾는데 어려움을 겪는 문제가 발생하였습니다.
why?

@ManyToOne(fetch = LAZY) @JoinColumn( foreignKey = @ForeignKey(name = "fk_expenditure_user"), name = "user_id") private User user; @OneToOne(fetch = LAZY) @JoinColumn( foreignKey = @ForeignKey(name = "fk_expenditure_user_category"), name = "user_category_id") private UserCategory userCategory;
패키지 구조(미정)
- 개발 좀 더 진행하면서 tree로 채워 넣기
Validation
- Spring-boot-Validation 사용
- Entity에 대한 Validation은 구아바 사용
- why? → Entity 규칙을 생성자에 강제하여 가독성을 높인다.
Documentation
- RestDocs로 작성하고, Swagger와 연동하여 배포한다.
RestDocs작성 시 2개의 import를 사용한다. (주석처리된 import 사용하면 안된다.)
// import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.*; import static com.epages.restdocs.apispec.MockMvcRestDocumentationWrapper.*; // import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.*;
Commit Convention
- AngularJS
- Intellij git commit template 적용
- 커밋 메시지
- 한글 위주로 작성, 필수 영어 표현만 기재
PR, Issue Convention
- PR 네이밍
[#이슈 번호] 이슈 이름
- PR 단위
- 이슈 단위
- Issue 제목 규칙
- 이슈 별 레이블 추가 (feature, bug, refactor)
- PR, Issue 템플릿 - 링크
- Projects With Issue 처리 방식 정의
- 이슈 등록 → Projects에서 프로젝트 선택
- PR 요청
- PR Merge하기 전에 Development에서 해당 이슈 선택