HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🌚
[New] 우기팀
/
규칙
규칙
규칙

규칙

공지

  • Jira Issue 생성은 다같이

Git Commit 컨벤션

commit message prefix

  • init: project setting
  • feat: 새로운 기능 추가
  • fix: 버그 수정
  • docs: 문서 수정
  • style: 코드 스타일 변경 (코드 포매팅, 세미콜론 누락 등)
  • test: 테스트 코드, 리팩토링 (Test Code)
  • refactor: 리팩토링 (Production Code)
  • build: 빌드 파일 수정
  • chore: 자잘한 수정이나 빌드 업데이트
  • rename: 파일 혹은 폴더명을 수정만 한 경우
  • remove: 파일을 삭제만 한 경우

커밋메시지에 지라 이슈번호 넣기

  • 예) feat: 기능 추가 [AIR-13]
    • 컨텐츠는 안에 자유롭게

브랜치 전략

notion image
  • 브랜치 이름 feature/AIR-XXX

PR 관리

  • PR 양식
    • 제목 : [AIR-N] 회원 기능 도메인
    • 내용
      • <!-- PR 제목 양식 예시: [AIR-N] 회원 기능 도메인 --> ## 🛠️ 작업 내용 - ## 🤔 기타 <!-- PR 포인트 혹은 궁금한 점 등등 적어주시면 됩니다. 없으시면 지워주세요 --> -
  • 브랜치 어디에서 어디로
    • prgrms-be-devcourse:feature/AIR-N → prgrms-be-devcourse:dev
  • Approve 전략
    • 팀 A 이슈 완료 → 팀 B 에게 PR 요청 → 팀 B 모두 팀 A 의 코드 함께 확인 후 리뷰

페어 프로그래밍 규칙!

  • 스크럼 시 태스크를 정하고 페어
  • 팀 내 자율

코드 컨벤션

  • 패키지 구조
  • aircnc
    • contant
    • controller
      • MemberController
      • dto
      • domain
        • member
          • entity
          • repository
          • service
        • room
          • …
     

    도메인

    • 엔티티의 필드제한은 상수로 정의
    • ManyToOne(optional=false)→ INNER JOIN 으로 성능 최적화 됨(default는 OUTER JOIN)
    • @Collumn 관련 설정시 굳이 디테일 하게 작성 하지 않는다.
      • 나중에는 ddl-auto:none 으로 하고 schema.sql 활용할 것

    서비스 계층

    • Service 인터페이스 사용함
      • e.g.) 인터페이스 MemberService, 구현체 MemberServiceImpl
    • 엔티티 반환
    • 클래스에는 @Transactional(readonly= true), 수정 메서드에 @Transactional(readonly= false) → @Transactional 은 spring거 사용
     

    컨트롤러 계층

    • 엔티티의 dto 는 한 파일에
      • e.g.) ArticleDto
    • use case 별 dto 는 엔티티 dto 의 static class 로
      • e.g.)AriticleCreateRequest
     

    테스트 코드

    • 테스트 메서드 이름은 구체적으로. (예시 : 이름이_공백인_숙소_생성_실패)
    • Assertions.isThrownBy 앞에 개행
      • assertThatAircncRuntimeException() .isThrownBy(() -> new PhoneNumber(testPhoneNumber));
    • 아래와 같이 예외를 앞에 쓰는 형식으로 예외 테스트 작성하기
      • assertThatExceptionOfType(TripCancelException.class) .isThrownBy(() -> trip.cancel(guest));
    • 접근제어자 표기
    • 값 객체 테스트 방식
      • Email email = new Email("aaaa@gmail.com"); assertThat(email).isEqualTo(new Email("aaaa@gmail.com");
    • given/when/then 주석 적용

    메서드 규칙

    • 첫 줄은 붙여서 작성하기