github

이슈와 pr 기능 단위로 쪼개서 올리기

한 pr 당 커밋 세분화해서 날리기

  1. 브랜치 전략

    |-- main
        |-- develop ✅ gitaction target
            |-- feature/<# issue_number>
            ex) feature/#123
    
  2. 커밋 규칙

    이모티콘 문자 커밋 유형 의미
    :sparkles: feat 새로운 기능 추가
    🐛 :bug: fix 버그 수정
    📝 :memo: docs 문서 수정 (md 파일)
    ♻️ :recycle: refactor 코드 리팩토링
    💄 :lipstick: style 코드 formatting, 세미콜론 누락, 코드 자체의 변경이 없는 경우
    :white_check_mark: test 테스트 코드, 리팩토링 테스트 코드 추가
    🚀 :rocket: chore 패키지 매니저 수정 (Dockerfile, gradle, sh, yml)
    🚑 :ambulance: !hotfix 급하게 치명적인 버그를 고쳐야 하는 경우
    ✨ feat: 로그인 개발 (#issue_number)
    

    커밋은 웬만하면 나눠서 하기

  3. 코드 리뷰 - x

    필수 2인 이상 승인?

  4. 이슈 → 풀리퀘

    1. 이슈명: ✨ [FEATURE] 로그인 개발
    2. pr명: ✨ [FEATURE] 로그인 개발 (#issue_number)

code

  1. 패키지 구조 계층형 vs 도메인형

    패키지 구조 - 도메인형
    
    com
     ㄴ example
        ㄴ unimade
            ㄴ domain
            |   ㄴ account
            |   | ㄴ controller
            |   | ㄴ dto
            |   | ㄴ entity
            |   | ㄴ exception
            |   | ㄴ repository
            |   | ㄴ service
            |   ㄴ user
            |   | ㄴ controller
            |   | ㄴ dto
            |   | ㄴ entity
            |   | ㄴ exception
            |   | ㄴ repository
            |   | ㄴ service
            | ...
            ㄴ global
                ㄴ auth
                ㄴ common
                ㄴ config
                ㄴ error
                ㄴ infra
                ㄴ util
    
  2. Converter 사용? - x

  3. ServiceImpl 사용? - interface 안쓰는 것 선호 - x

    https://zhfvkq.tistory.com/76

  4. Service - command / Query 분리 - 0

  5. DTO

    1. record vs static class? - class

      https://velog.io/@phdljr/TIL-DTO-class를-record로-사용해야하는-이유

    2. 목적어 + 동사 순서로 구성 ex) MemberCreateRequest

    3. DTO 에 변환 로직만 넣기 (toEntity, of, from)

      • toEntity : DTO → Entity
      • of : Entity + @ → DTO
      • from : Entity → DTO
    4. 무조건 builder 패턴

    5. @NotBlank → Controller Request 에서 @Valid 를 통해 수행

      https://sanghye.tistory.com/36

  6. class

    1. 명사 + 명사 순서로 구성 ex) MemberValidator
  7. Method

    1. 동사 + 명사 순서로 구성
  8. Lombok 컨벤션

    1. @Setter 사용 금지 → entity에서 매서드 구현
    2. @Getter 는 허용
    3. ToString 은 구현해서 사용
  9. update 등 속성 다량 수정 시 → entity에서 매서드 구현

  10. 주석

    1. PR 요청할 때 기능개발이 끝나지 않았다면 // TODO 주석처리 하고 PR 에 명시하기
    2. 서비스가 복잡한 경우 주석으로 간략 설명
  11. 커스텀 에러 응답 처리