Search
Duplicate

Code Convention

코드 컨벤션

Entity
setter 사용 금지
메서드 사용 가능
BUT 메서드명기능을 명시적으로 정하기
컬럼으로 래퍼 클래스 통일
엔티티명은 -Entity 접미사 안 붙이고 도메인 그대로. ex) User
테이블명
tb_ 접두사 붙이기
근거 : 통일성 (예약어에 -s 붙이면 통일성 어색)
Optional 사용
Validator 사용 시 끼워 맞춰야 하는 경우가 종종 생김.
생성자
private 생성자 위에 @Bbuilder 패턴 사용
필드 없을 시 클래스 단에 @JsonIgnoreProperties 이용
레포지토리
JpaRepository 상속
객체간 변환 작업
org.mapstruct.Mapper 사용
예제 코드
@Mapper public interface CommentServiceMapper { CommentServiceMapper INSTANCE = Mappers.getMapper(CommentServiceMapper.class); CommentSaveRes toCommentSaveRes(Comment comment); } @Override @Transactional public CommentSaveRes saveComment(CommentSaveReq req) { Card card = findCard(req.getCardId()); TeamRole teamRole = findTeamRole(req.getUsername(), card.getCategory().getTeam().getTeamId()); return CommentServiceMapper.INSTANCE.toCommentSaveRes( commentRepository.save( Comment.builder().content(req.getContent()).card(card).teamRole(teamRole).build())); }
Java
복사
여기서 HttpStatus 제외한 code, message 사용.
도메인마다 천 단위로 다르게 예외코드 작성
Exceetion도 CustomException을 만들어서 ResultCode만 넣어서 throw 하기
Custom ResponseEntity 사용
테스트는 단위 테스트만, 성공케이스만 작성
테스트 스텁 만들어 놓기
API 1개당 요청, 응답 DTO 1개씩 만들기.
Request, Response 모두 Java 8 record 사용하기
Request, Response 모두 필드가 있다면 클래스 레벨 @Builder적용하기
테스트에서 사용하기위함임
필드 없을 시 만들 예시
@JsonIgnoreProperties public class UserUpdateProfileRes {}
JavaScript
복사
DTO
네이밍 규칙
도메인 + 기능 + 요청/응답 Dto
기능 작명을 할 때는 가능한 HTTP Method 명으로 하기.
ex) 유저 도메인의 로그인 요청 dto : UserLoginRequestDto
메소드명 : 무슨 일을 하는 메소드 인지 이해될 정도로.
동사로 시작.
Record 사용
패키지 구조
domain, global, infra대분류 하여 구분
Repository
아래 구조로 통일한다 (작성자 @임지훈)
public interface PostsRepository extends JpaRepository<Posts, Long> { }
Java
복사