• 네이밍은 sql 예약어에 위배되지 않도록 주의

    • order, where, group, limit …
    • 위의 키워드들은 sql 예약어, 즉 DB에서 이미 사용되고 있는 키워드이기 때문에 일반적인 클래스 또는 테이블 관련 네이밍에서 사용하게 되면 예약어를 사용할 수 없다는 에러를 띄움
  • 클래스명 - 파스칼 케이스 ( UserName )

  • 변수 / 함수 / 메서드명 - 카멜 케이스 ( userName )

  • 컬럼명 - 스네이크 케이스 ( user_name )

  • 프로젝트명 - 케밥 케이스 ( user-name )

  • 상수 변수명 - 어퍼 케이스 ( USER-NAME )

  • boolean 타입 - is + 명사 ( isUserName )

  • 엔티티명 - 단수형 ( User )

  • 테이블명

  • DTO 네이밍 규칙

    • 파스칼 케이스 ( OrderSearchRequest )
    • 엔티티명 + 행동 + Request or Response
  • 컨트롤러 계층 코드 관리

  • 주석 작성하기

    • 자바 DOC ( /** + enter ) 메서드 단위로 써보자
    • 줄 주석으로 최대한 이해할 수 있게
  • 생성자 어노테이션 vs 생성자 메서드

    • → 생성자 어노테이션 사용으로 통일하자 !
  • 엔티티 고유 식별자 id는 (엔티티)id vs id

    • → Long id 로 사용
  • 에러 코드 커스텀해서 사용

    • ErrorCode Enum 클래스 내에 커스텀해서 사용하기 ( 아래는 예시 )
    • “%s” : 에러 코드 사용 시에 커스텀 메시지 사용 가능
    USER_NOT_FOUND(HttpStatus.NOT_FOUND, "조회 실패 : %s"),
    BOARD_BAD_REQUEST(HttpStatus.BAD_REQUEST, "보드 요청에 잘못된 정보가 포함되어 있습니다.");
    
  • Controller클래스 애노테이션 나열순서(사용하는 애노테이션만)

    • @Restcontroller
    • @RequiredArgsConstructor
    • @RequestMapping
    • 기타 추가 애노테이션
  • Service클래스 애노테이션 나열순서(사용하는 애노테이션만)

    • @Service
    • @RequiredArgsConstructor
    • @Transactional(readOnly = true)
    • @Slf4j
    • 기타 추가 애노테이션
  • DTO클래스 애노테이션 순서(사용하는 애노테이션만)

    • @Getter
    • @NoArgsConstructor
    • @AllArgsConstructor
  • Entity클래스 애노테이션 순서(사용하는 애노테이션만)

    • @Entity
    • @Table
    • @Getter
    • @NoArgsConstructor
    • @AllArgsConstructor
  • @AuthenticationPrincipal AuthUser authUser을 Controller에서 사용시

    • Service계층에 파라미터로 authUser객체 그대로 넘길것(id나 필드값 뽑아서 넘기지 않기)

    image.png