Version Guide

  • java version: v11

Code Style Guide

  • 코드의 width최대 120자를 넘지 않도록 합니다.
  • 하나의 메소드는 하나의 역할만 수행하도록 작성합니다.
  • 메소드의 매개변수가 4개 이상일 시 별도의 객체를 만들어 전달합니다.
  • 코드 작성 시 스타일은 카멜 케이스로 작성해주세요.
  • 변수는 명사형으로, 메소드(함수)는 동사형으로 작성해주세요.
  • 자주 사용하는 혹은 불변하지 않는 값은 enum이나 final로 선언해주세요.
  • 접근 제어, 인터페이스/구현부 분리 등의 캡슐화를 최대한 지키며 코드를 작성합니다.
  • Backend의 경우 폴더명(패키지)은 소문자로, 파일명은 카멜 케이스로 작성해주세요.
  • Backend의 경우 문자열 작성 시 “” 사용해주세요.
  • CRUD method의 경우 다음과 같은 네이밍을 사용합니다.
    동작 Repository Service
    Create insertXXX createXXX
    Read findXX(ByXXAnd/OrYY) getXX(ByXXAnd/OrYY)
    Update updateXXX(ByXXAnd/OrYY) updateXXX(ByXXAnd/OrYY)
    Delete deleteXXX(ByXXAnd/OrYY) deleteXXX(ByXXAnd/OrYY)
    • 일반적으로 DB에서 데이터를 검색할 땐 findXX 형태를 사용하며, 외부 API를 사용할 땐 getXXX 형태를 사용합니다.

RESTful API Guide

기본적으로 url은 명사형으로 작성하며, 동작은 Method로 정의합니다.

  • controller에서 응답 시 정확한 status code를 전달합니다.

    Code Description
    200 OK: 요청이 성공적으로 처리되었을 때 사용합니다.
    201 CREATED: 요청이 성공적으로 처리되었으며, 그 결과 새로운 리소스가 생성되었을 때 사용합니다.
    400 BAD REQUEST: Frontend에서 잘못된 요청 혹은 요구되는 data가 빠졌을 시 사용합니다.
    401 UNAUTHORIZED: 사용자가 인증되지 않아 요청 권한이 없는 경우 사용합니다.
    403 FORBIDDEN: 사용자가 인증되었으나 해당 리소스에 대한 권한이 없을 경우 사용합니다.
    404 NOT FOUND: 해당하는 리소스를 찾을 수 없을 경우 사용합니다.
    409 CONFLICT: 기존 리소스와 충돌하는 경우 사용합니다. (ex. 중복 이메일)
    500 INTERNAL SERVER ERROR: 기타 알 수 없는 서버 오류 시 사용합니다.
  • API 정의 시 올바른 Method를 사용합니다.

    Method Description
    GET 리소스 조회 요청 시 사용합니다.
    POST 새로운 리소스 생성 시 사용합니다.
    PUT 리소스 전체 내용을 수정할 때 사용합니다.
    PATCH 리소스 부분 내용을 수정할 때 사용합니다.
    DELETE 리소스 삭제 시 사용합니다.
  • 어떤 리소스를 식별하고 싶으면 Path Variable, 정렬이나 필터링Query Parameter를 사용합니다.

    /users  # 사용자 목록을 가져온다.
    /users?occupation=programer  # 프로그래머인 사용자 목록을 가져온다.
    /users/123  # 아이디가 123인 사용자를 가져온다.
  • url에는 대문자 대신 소문자를 사용하며, 언더바 대신 하이픈(-)을 사용하여 케밥 케이스로 작성합니다.

  • 파일의 확장자는 url에 포함하지 않습니다.

  • API 요청 시 권한 설정을 명확하게 설정하여 보안을 강화합니다.

  • PK id값이 주소에 들어있는 경우 암호화가 필요합니다.

SQL Style Guide

  • 쿼리문은 다음과 같은 형식으로 작성합니다.

    -- 키워드, 문장 등의 경우 항상 다음 새로운 줄에서 시작합니다.
    SELECT col_name 
    FROM table_name
    WHERE colum_name=${condition}
        AND id=${id}
    ORDER BY column_name
    ;
    
    -- 예시
    SELECT BOOK.book_id
        , AUTHOR.author_name
        , DATE_FORMAT(BOOK.published_date, '%Y-%m-%d') AS published_date
    FROM book BOOK
        JOIN author AUTHOR
        ON BOOK.author_id = AUTHOR.author_id
    WHERE
        BOOK.category = '경제'
    ORDER BY
        BOOK.published_date
    ;
    • 예약어, DB alias의 경우 대문자로 작성합니다.
    • alias는 최대한 자세하게 지어주세요.
  • DB의 경우 대소문자 구분이 없기 때문에 스네이크 케이스를 사용하는 것이 권고사항입니다.

  • 기본키 필드의 경우 id, 외래키 필드의 이름의 경우 {참조 테이블명}_id로 이름을 통일합니다.

    • 단, Application 레이어에서 기본키 필드를 사용할 땐 {참조 테이블명}Id로 이름을 사용해주세요.
    • Application 레이어에서는 카멜 케이스를 사용해야 함을 주의하세요.

참고 사이트

우아한 테크코스 문서 저장소

https://github.com/woowacourse/woowacourse-docs

Backend

DB