Code Convention
•
Entity
◦
setter 사용 금지
◦
메소드 사용 금지
◦
private Builder → Builder 강제함으로써 코드 통일성
•
객체간 변환 작업
◦
org.mapstruct.Mapper 사용
implementation 'org.mapstruct:mapstruct:1.5.3.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.3.Final'
Shell
복사
•
Custom ResultCode 사용
•
Custom ResponseEntity 사용
•
api 1개당 dto 1개씩 (req, res)
◦
단건 조회 @Pathvariable 사용
▪
요청할 데이터가 1개일 경우만 해당
▪
2개 이상은 Dto에 담아서 요청
CQRS 도입에 대해서… 보류
Commit Convention
•
Feat : 새로운 기능을 추가하는 경우
•
Fix : 버그를 고친경우
•
Docs : 문서를 수정한 경우
•
Style : 코드 포맷 변경, 세미콜론 누락, 코드 수정이 없는경우
•
Refactor : 코드 리팩토링
•
Test: 테스트 코드 작성
Git flow
•
main
•
develop (default)
•
feature/
◦
ex. feature/login
Code Style
API 명세서
Table
Search
Table
Search
•
네이밍 규칙
◦
dto
도메인 + 기능 + 요청 / 응답 Req / Res
▪
request: Req
▪
response: Res
◦
메소드명: 무슨 일을 하는 메소드인지 이해될 정도면 됨
◦
Entity
▪
엔티티명: 도메인명 그대로 ex) User
▪
테이블명: tb접두사를 붙혀서 표현하기
▪
id → 도메인명 + id
▪
Optional를 뺀다 → vaildator file 로 로직 분리
•
repository 인터페이스를 하나더 넣어서 사용할 메서드만 정리하자!
•
save, delete 등등 이정도?
•
구현 방법은 !
•
사진의 1번방법을 도입
◦
Service
▪
update → transactional, LAZY → tr = readonly = true
◦
◦
패키지 구조
▪
domain / global / infra (도메인 별로)
◦
User
▪
login / logout 처리를 어디서!?
•
filter → 근거 빈약! 한번더 공부해보자
▪
소셜로그인
•
google, naver, github
▪
로컬로그인
•
메일 인증 → 링크 방식
•
닉네임 / 이메일 / 패스워드 회원가입
•
id → autoincrement
▪
소셜 / 로컬 이메일 중복이어도 다른 유저 취급
Table
Search
•
yml vs proiperties = yml
•
풀리퀘, 이슈 템플릿 사용
•
라벨 커스텀으로 생성
•
이슈 하나당 1작업으로 이슈 내부에 체크박스 없게 할지, 아니면 이슈 내에 체크박스 둬서 다 한 거 체크할지.
•
database → value_together
•
에러코드는 주석으로 도메인별로 나눠서 작성하는게 좋더라~