Closed kor-Chipmunk closed 1 year ago
코드는 다음 규칙으로 작성됩니다. 우선, 대략적으로 소개하는 의미로 생각나는 대로 정리했습니다. 성능은 다소 포기하면서 최대한 코드를 통일하면서 기능 추가 시 구조를 유지하기 쉽도록 리팩터링했습니다. 자세한 사항은 따로 노션으로도 정리할 예정입니다.
SportEventRes
-> SportEventResponseDTO
: Controller
에서 Response
응답을 내려주는 DTO
임을 명시FindUniversitiesResponseDTO
: 복수의 University
엔티티를 담은 DTO
임을 명시FindEmailRequestDTO
& FindEmailResponseDTO
: 서로 관련된 객체임을 명시model
-> dto
으로 폴더명 변경DTO
는 엔티티를 담는 DTO
를 최우선으로 작성 -> 따라서 컨트롤러에서 사용하는 ResponseDTO
에서 필드를 새로 생성 또는 분리하는 것 보다 엔티티 DTO 를 그대로 사용하는 걸 지향 ( 쿼리 최적화는 추후 문제 )ResponseDTO
에선 message
뿐 아니라 최신 리소스 DTO
를 전달 ( 불필요한 조회 네트워크 호출 방지 목적 )
BooleanExpression
을 활용하여 작성Controller
에선 Service
으로 UserId
와 RequestDTO
를 그대로 넘기고 ResponseDTO
를 받아 바로 반환해주는 로직으로 통일
findById
등) 은 UserUtils
, CompetitionUtils
등으로 static method 로 분리 ( 불필요한 공통 orElseThrow 코드 반복 방지 )BasePageable<xxxxxResponseDTO>
클래스 사용@Transactional
어노테이션은 클래스에 붙이는 것보다 메서드에 바로 붙임 (메서드 코드 조각만 보고도 바로 파악하기 위함)
@Transaction(readOnly = true)
, 그 외 생성 / 변경은 @Transactional
으로 통일Service
에서 검증하는 로직은 다른 메서드 validateXXX
(XXX : 보통 Service
메서드명) 으로 분리
@Entity
의 경우 핵심 어노테이션이므로 클래스명 바로 위에 작성Lombok
의 어노테이션TODO
주석을 제외하고 개발 중에 일어난 모든 불필요한 주석은 최종 커밋에 반드시 삭제 ( 타인이 그 주석을 삭제하기가 판단 내리기 어려움 )
Builder
패턴의 경우 Competition.builder()
까지만 작성하고 모든 체이닝 메서드는 개행으로 구분
⚠️ Issue
✏️ ToDoList