인덱스
기본 코드 스타일네이버 코드 스타일, 소나 린트팀 컨벤션CodeStyleToStringEqualsAndHashstatic importClass NamingMethodNaming롬복로그TRACEDEBUGINFOWARNERRORDTOMapper / ConverterDTO 레이어 변환예외BusinessException스택 트레이스줄바꿈
기본 코드 스타일
네이버 코드 스타일, 소나 린트
팀 컨벤션
CodeStyle
ToString
- 모든 엔티티, 값객체는 ToString 을 정의한다.
EqualsAndHash
- 필
static import
- static 메서드를 사용할 때 클래스를 생략하지 않는다. ex) Assertions.assertThat()
- → 테스트 코드는 예외 하기로~
Class Naming
- Controller 클래스명에 Rest 를 구분한다. → ex) MemberRestController.class
- 설정 클래스명은 ~Config 로 통일한다. → ex) WebMvcConfig.class
MethodNaming
- 컨트롤러 레이어를 제외한 테스드 메소드명은 test 로 시작한다. → ex) testSaveMember()
- 컨트롤러 레이어 테스트는 문서화 네이밍을 통일하기 위해서 HttpMethod 단위를 사용한다. → ex) getMember(), postMember()
롬복
@Getter
, @NoArgsConstructor
, @RequiredArgsConstructor
, @Builder
만 사용한다.나머지 롬복 애노테이션은 설정을 통해서 사용하지 못하도록 막는다.
로그
TRACE
- 테스트 환경에서 SQL 파라미터 값을 확인하기 위해 사용한다.
DEBUG
- SQL 을 확인하기 위해 사용한다.
INFO
- 비지니스 예외, Validation 을 위반하는 경우 등 전반적인 예외 상황에서 사용한다.
WARN
- Warn 레벨은 일단 사용을 보류한다.
ERROR
- 예상하지 못한 예외 가 발생한 경우 사용한다.
- 배포 환경에서 Sentry 로 로그를 관리한다.
DTO
Mapper / Converter
- 컨트롤러 레이어에서는 ~Mapper, 서비스 레이어에서는 ~Converter 로 각 레이어에 맞는 DTO 로 변환을 한다.
- 모든 변환 메서드는 static 메서드를 사용한다.
- 메서드명은
to + 변환할 객체클래스명
규칙을 따른다.
DTO 레이어 변환
- 클라이언트 → 컨트롤러
- ~Request 객체로 클라이언트의 요청 데이터를 받는다.
- 컨트롤러 → 서비스
- ~Dto 객체로 변환해서 보낸다.
- 서비스 → 컨트롤러
- 엔티티, ~Response 어떠한 것을 보내도 상관없다. 하지만 가능하다면 ~Response 객체를 보낸다.
- 컨트롤러 → 클라이언트
- ~Response 객체로 응답을 보낸다.
예외
BusinessException
- BusinessException 이라는 커스텀 예외를 만들어서 예외 처리를 진행한다.
- BusinessException 은 주로 400번 대 예외 처리를 할 때 사용된다.
- BusinessException 은 ErrorCode 필드를 가진다.
- 커스텀 예외가 많아지지 않도록 하기 위해서 BusinessException 을 상속받고, 함수 메서드로 처리한다.
스택 트레이스
- 예외 처리를 하게될 경우 디버깅을 편하게 할 수 있도록 예외 스택 트레이스를 꼭 남긴다.
try { System.out.println("Hello World"); } catch (Exception ex) { throw new Exception("message", ex); }
줄바꿈
- 클래스와 첫 필드 사이에 한 줄을 꼭 비운다.
- 필드 사이에 애노테이션이 붙을 경우에는 필드 사이에 한 줄을 꼭 비운다.
- return 을 하기 전에 한 줄을 꼭 비운다.
- 비슷한 성격의 작업을 마치고 나면 한 줄을 꼭 비운다.
- DTO 객체는 네이버 체크스타일을 따르지 않고 한 줄씩 띄우기로한다.