Skip to content

gdsc-ssu/gdsc-forum

Repository files navigation

GDSC Forum API

GDSC Forum 스프링 부트 API 서버입니다.

💻 Coding Convention

  • 컨벤션은 강하게 가져가진 않겠습니다. 각자의 프로젝트에 도움이 되도록 참고만 해주세요.
🗂 패키지 구조

🗂 node_modules
   
🗂 src/main/java/com/example/gdscforum

    - common 🗂

        - exceptions 🗂

        - configurations 🗂

        - dto 🗂

        - enums 🗂

        - 기타 글로벌 패키지 🗂

    - domain 🗂

        - auth 🗂

            - controller 🗂

                - request 🗂

                - response 🗂

            - service 🗂

            - repository 🗂

            - entity 🗂

            - dto 🗂

        - dev 🗂

            - 이하 동일 🗂

        - post 🗂

        - 비즈니스 도메인 단위 패키지 🗂
   

build.gradle
   
settings.gradle
   
gradlew
  • 기본적인 프로젝트의 패키지 구조입니다. 위 구조를 기본으로 하되 상황에 맞게 적절히 변형하여 사용하시면 됩니다.
  • common : 공통으로 사용되는 패키지
    • 공통으로 사용되는 설정 및 클래스들이 위치하는 패키지입니다.
    • 하위에 상황에 맞는 패키지 구조를 추가할 수 있습니다.
  • domain : 비즈니스 도메인 단위 패키지
    • 비즈니스 도메인 단위로 패키지를 구성합니다.
    • 각 도메인 패키지 하위에 상황에 맞는 패키지 구조를 추가할 수 있습니다.

🖋 네이밍

Class & Contructor

  • Class, Contructors는 **Pascal Case (=UpperCamelCase)**를 사용합니다.

    좋은 예

    CamelCase

    나쁜 예

    camelCase

함수 & 변수 &상수

  • 함수와 변수에는 lowerCamelCase를 사용합니다.

  • 함수의 경우 동사+명사형태로 구성합니다.

    • ex) getUserInformation()
  • 글자의 길이

    • 글자의 길이는 20자 이내로 제한합니다.
    • 4단어 이상이 들어가거나, 부득이하게 20자 이상이 되는 경우에는 팀원과의 상의를 거쳐야 합니다.
  • flag로 사용되는 변수

    • Boolean의 경우 조동사+flag 종류로 구성합니다.
    • ex) isNum, hasNum
  • 기본적인 데이터 핸들링에서는 Array 보다는 List를 지향합니다.

    • List를 사용하면 데이터의 추가, 삭제, 검색 등이 편리합니다.
    • ex) List list = new ArrayList<>();
  • 약칭의 사용

    • 약어는 되도록 사용하지 않습니다.

    좋은 예

    String index;
    int count;
    List<String> list;
    boolean seoulToBucheon;

    나쁜 예

    String idx;
    int cnt;
    String[] arr;
    boolean seoul2Bucheon;

🏷 주석

  • 한줄은 //로 적고, 그 이상은 /** */로 적습니다.
// 한줄 주석일 때
/**
 * 여러줄
 * 주석일 때
 */

📎 기타

  • 탭 사이즈는 4로 사용합니다.

    • intellij 설정에서 indent를 검색하면 설정할 수 있습니다.
  • 한 줄의 최대 길이는 80자로 제한합니다.

  • 괄호 사용

    • (if, while, for)문 괄호 뒤에 한칸을 띄우고 사용합니다.
       if (left == true) {
         // logic
       }
  • 띄어쓰기

    int a = 5;  ( = 양쪽 사이로 띄어쓰기 하기)
    if (a == 3) {
        // logic
    }
  • 유용한 설정

    • inlay hints: 변수 타입 미리보기 img.png
    • Actions on Save: 저장(Ctrl+s)시 액션 img_1.png

✉️ Commit Messge Rules

Git Commit Message Rules

  • 반영사항을 바로 확인할 수 있도록 작은 기능 하나라도 구현되면 커밋을 권장합니다.
  • 기능 구현이 완벽하지 않을 땐, 각자 브랜치에 커밋을 해주세요.

📜 커밋 메시지 명령어 모음

- feat    : 기능 (새로운 기능)
- fix     : 버그 (버그 수정)
- refactor: 리팩토링
- style   : 스타일 (코드 형식, 세미콜론 추가: 비즈니스 로직에 변경 없음)
- docs    : 문서 (문서 추가, 수정, 삭제)
- test    : 테스트 (테스트 코드 추가, 수정, 삭제: 비즈니스 로직에 변경 없음)
- chore   : 기타 변경사항 (빌드 스크립트 수정 등)

ℹ️ 커밋 메세지 형식

  • [커밋메세지] 설명 형식으로 커밋 메시지를 작성합니다.

좋은 예 >

  [Feat] 메인뷰 조회 API 구현 완료

나쁜 예 >

  메인뷰 API 구현 성공

Github mangement

Gitflow

  • main 브랜치
    • 개인 브랜치(예: HwangonJang)
      • feat 브랜치
  • default는 main브랜치입니다.
  • 하위에 개인 브랜치를 자신의 이름으로 만들어 안전하게 관리합니다.
  • 기능 개발시 → 개인 브랜치 하위에 feat/주차 으로 브랜치를 파서 관리합니다.
  • 단 feat은 주 단위의 과제 한 가지를 담당하며, 기능 개발이 완료되면 본인의 개인 브랜치로 Pull Request를 보냅니다.
  • 다른 팀원이 pr을 확인하고, 코드리뷰를 진행한 뒤 문제가 없으면 개인 브랜치에 병합을 합니다.
  • main 브랜치는 default 이지만 중요하지 않은 브랜치입니다. 최종 배포 시에만 사용합니다.

- main
    └── name1
        └── feat/1주차
        └── feat/2주차
    └── name2
        └── feat/1주차
    └── name3
        └── feat/1주차
        └── feat/2주차
            └── feat/3주차

각자 자신이 맡은 기능 구현에 성공시! 브랜치 다 쓰고 병합하는 방법

  • 브랜치 만듦
git branch 기능(or 이름 브랜치)
  • 원격 저장소에 로컬 브랜치 push
git push --set-upstream origin 브랜치이름(feat/주차 브랜치)
git push -u origin 브랜치이름(feat/주차 브랜치)
  • 브랜치 전환
git checkout feat/주차 브랜치
  • 코드 변경 (현재 feat/주차 브랜치)
git add .
git commit -m "커밋 메세지" origin feat/주차 브랜치
  • 푸시 (현재 feat/주차 브랜치)
git push origin feat/주차 브랜치
  • feat 브랜치에서 할 일 다 했으면 개인 브랜치로 전환
git checkout {name}
  • 머지 (현재 개인 브랜치)
git merge feat/주차 브랜치
  • 다 쓴 브랜치 삭제 (local) (현재 개인 브랜치)
git branch -d feat/주차 브랜치
  • 다 쓴 브랜치 삭제 (remote) (현재 개인 브랜치)
git push origin :feat/주차 브랜치
  • main pull (현재 개인 브랜치)
git pull or git pull origin develop
  • main push (현재 개인 브랜치)
git push or git push origin develop

About

Spring Boot GDSC 포럼 프로젝트입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published