-
모든 field는 위아래 한 줄 씩 공백을 둔다.
-
DTO
- 네이밍 컨벤션
- [도메인] + [행위] + [Request/Response]
- Request dto
- NoArgsConstructor 와 AllArgsConstructor를 쓴다.
- Entity를 반환하는 toEntity 메소드 생성 (dto → entity 1:1 매핑이 되면 ㄱㄱ)
- response dto
- 응답용 공용 Dto 작성
- dto의 필드 {code: xx, result: xx}
- internalHttpStatusCode
- (message, requestUri, serverTime ... )
- data(= result)
- 변환용 팩토리 메서드를 만든다.
-
Builder의 사용(response dto와 entity만 해당)
- 3개 이상의 인자가 필요한 생성자가 있는 모든 클래스 대상
-
반환형이 List인 메서드와 필드의의 이름은 복수형으로 끝낸다.
- Map과 Set은 필드 뒤에 Map, Set을 사용한다.
-
한 줄의 길이는 특정 글자 수를 넘어가지 않는다.
- 120자 이상 → 무조건 줄바꿈
- 120자 미만 → 가시성 좋다고 생각되는 방식으로
- 줄바꿈 실행시 → 무조건 1라인 = 하나의 인자
-
Entity, DTO의 field type
- Long id 같은 특별한 경우가 아니면 무조건 primitive를 사용한다.
- 기본적으로 primitive 를 써야한다.
- 검증을 잘 해야 하는 문제. Wrapper를 쓰면 NPE가 뜰 수 있다. (너무 critical)
- primitive의 디폴트가 0 이라면, 로직으로 검증을 해야 한다.
- 기본은 primitive!! 써야할 이유가 있을 때만 Wrapper를 쓰자
-
모든 필드에는 final을 붙인다.
- 중간에 update가 필요한 경우만 final을 안 붙인다
- dto는 final 제외
-
final 필드만 있다면 생성자 대신에 @RequiredArgsConstructor 를 사용한다
-
TODO 규칙 : 2021.12.27 Teru - [TP-234] 내용...
-
예외가 발생했을 때, 로그와 예외 메시지 관리
- throw 안에서는 로그로 남길 메시지 작성
- globalHandler의 return문에서는 사용자에게 응답할 메시지 작성(MessageUtils에서 꺼내오기)
-
PR 생성시
-
field가 먼저, method가 나중에 나오도록
- 개방도 높은 순서가 위쪽으로 오도록
- public static
- private static
- public
- protected
- private
- public method
- protected method
- private method
- private method가 한 메서드에서만 사용된다면 그 메소드 직후에 위치한다.
- 2개 이상의 메서드에서 사용된다면 제일 아래 공통 메서드 영역에 위치한다.
-
Transactional은 클래스에 적지 않고, 메서드에만 적는다.