/SOPKATHON-13-SERVER

FunnySunny and Agenda

Primary LanguageJavaMIT LicenseMIT

πŸ“’ μ†Œλ¬Έλ‚˜: μ†ŒμŒμ˜ λ¬Έμ œλŠ” λ‚˜!

μ•„νŒŒνŠΈμ— μ‚΄λ©΄μ„œ μΈ΅κ°„ μ†ŒμŒμ΄ λ‚΄ 탓일 μˆ˜λ„ μžˆλ‹€λŠ” μƒκ°ν•΄ λ΄€μ–΄?!

SOPKATHON-13-SERVER

πŸ§‘β€πŸ’» Developers

전선희 이의제
funnysunny08 euije

🐾 Roles

κΈ°λŠ₯λͺ… μ—”λ“œν¬μΈνŠΈ λ‹΄λ‹Ήμž
둜그인 [GET] /user 전선희
였늘 찌λ₯΄κΈ° 쑰회 [GET] /user/{fromHomeNumber=Long}/complain 이의제
찌λ₯΄κΈ° [POST] /complain 전선희
μ†ŒμŒ κ³ μ§€μ„œ [GET] /user/{homeNumber=Long}/weekly 전선희
μ†ŒμŒ κ³ μ§€μ„œ 리슀트 [GET] /user/{homeNumber=Long}/weekly 이의제

πŸ™ Code Convention

πŸ’‘ λ™λ£Œλ“€κ³Ό 말투λ₯Ό ν†΅μΌν•˜κΈ° μœ„ν•΄ μ»¨λ²€μ…˜μ„ μ§€μ •ν•©λ‹ˆλ‹€. μ˜€ν•©μ§€μ‘Έμ˜ μ½”λ“œκ°€ μ•„λ‹Œ, ν•œ μ‚¬λžŒμ΄ μ§  것같은 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 것이 μΆ”ν›„ μœ μ§€λ³΄μˆ˜λ‚˜ ν˜‘μ—…μ—μ„œ 도움이 λ©λ‹ˆλ‹€. λ‚΄κ°€ μ½”λ“œλ₯Ό μƒκ°ν•˜λ©΄μ„œ 지 수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” 룰이라고 생각해도 μ’‹μŠ΅λ‹ˆλ‹€!

λͺ…λͺ…κ·œμΉ™(Naming Conventions)
  1. μ΄λ¦„μœΌλ‘œλΆ€ν„° μ˜λ„κ°€ μ½ν˜€μ§ˆ 수 있게 μ“΄λ‹€.
  • ex)

    // bad
    function q() {
        // ...stuff...
    }
    
    // good
    function query() {
        // ..stuff..
    }
  1. 였브젝트, ν•¨μˆ˜, 그리고 μΈμŠ€ν„΄μŠ€μ—λŠ” camelCaseλ₯Ό μ‚¬μš©ν•œλ‹€.
  • ex)
    // bad
    const OBJEcttsssss = {};
    const this_is_my_object = {};
    function c() {}
    
    // good
    const thisIsMyObject = {};
    function thisIsMyFunction() {}
  1. ν΄λž˜μŠ€λ‚˜ constructorμ—λŠ” PascalCaseλ₯Ό μ‚¬μš©ν•œλ‹€.
  • ex)
    // bad
    function user(options) {
        this.name = options.name;
    }
    
    const bad = new user({
        name: 'nope',
    });
    
    // good
    class User {
        constructor(options) {
            this.name = options.name;
        }
    }
    
    const good = new User({
        name: 'yup',
    });
  1. ν•¨μˆ˜ 이름은 동사 + λͺ…사 ν˜•νƒœλ‘œ μž‘μ„±ν•œλ‹€. ex) postUserInformation( )
  2. μ•½μ–΄ μ‚¬μš©μ€ μ΅œλŒ€ν•œ μ§€μ–‘ν•œλ‹€.
  3. 이름에 λ„€ 단어 이상이 λ“€μ–΄κ°€λ©΄ νŒ€μ›κ³Ό μƒμ˜λ₯Ό 거친 ν›„ μ‚¬μš©ν•œλ‹€
블둝(Blocks)
  1. λ³΅μˆ˜ν–‰μ˜ λΈ”λ‘μ—λŠ” μ€‘κ΄„ν˜Έ({})λ₯Ό μ‚¬μš©ν•œλ‹€.
  • ex)
    // bad
    if (test)
      return false;
    
    // good
    if (test) return false;
    
    // good
    if (test) {
      return false;
    }
    
    // bad
    function() { return false; }
    
    // good
    function() {
      return false;
    }
  1. λ³΅μˆ˜ν–‰ λΈ”λ‘μ˜ if 와 else λ₯Ό μ΄μš©ν•˜λŠ” 경우 else λŠ” if 블둝 끝의 μ€‘κ΄„ν˜Έ( } )와 같은 행에 μœ„μΉ˜μ‹œν‚¨λ‹€.
  • ex)
    // bad
    if (test) {
    thing1();
    thing2();
    }
    else {
    thing3();
    }
    
    // good
    if (test) {
      thing1();
      thing2();
    } else {
      thing3();
    }
μ½”λ©˜νŠΈ(Comments)
  1. λ³΅μˆ˜ν˜•μ˜ μ½”λ©˜νŠΈλŠ” /** ... */ λ₯Ό μ‚¬μš©ν•œλ‹€.
  • ex)
    // good
    /**
     * @param {String} tag
     * @return {Element} element
     */
    
    function make(tag) {
        // ...stuff...
    
        return element;
    }
  1. 단일 ν–‰μ˜ μ½”λ©˜νŠΈμ—λŠ” // 을 μ‚¬μš©ν•˜κ³  μ½”λ©˜νŠΈλ₯Ό μΆ”κ°€ν•˜κ³  싢은 μ½”λ“œμ˜ 상뢀에 λ°°μΉ˜ν•œλ‹€. 그리고 μ½”λ©˜νŠΈμ˜ μ•žμ— 빈 행을 λ„£λŠ”λ‹€.
  • ex)
    // bad
    const active = true; // is current tab
    
    // good
    // is current tab
    const active = true;
    
    // good
    function getType() {
        console.log('fetching type...');
    
        // set the default type to 'no type'
        const type = this._type || 'no type';
    
        return type;
    }

🌿 Branch Strategy

Git Workflow
main β†’ develop β†’ feature/#issue_num
issue_num : issue λ²ˆν˜Έμ— 맞게 생성

1. issue 생성
2. local - feature/#issue_num μ—μ„œ 각자 κΈ°λŠ₯ μž‘μ—… (issue_num : issue λ²ˆν˜Έμ— 맞게 생성)
3. remote - feature/#issue_num 에 Push
4. remote - develop 으둜 PR
5. μ½”λ“œ 리뷰 ν›„ Confirm λ°›κ³  remote - develop Merge
6. remote - develop 에 Merge 될 λ•Œ λ§ˆλ‹€ λͺ¨λ“  νŒ€μ› local - develop pull λ°›μ•„ μ΅œμ‹  μƒνƒœ μœ μ§€
Branch Name μ„€λͺ…
main 초기 μ„ΈνŒ… 쑴재
develop κ΅¬ν˜„ μ™„λ£Œ 브랜치
feature/#issue_num 이슈 별 κΈ°λŠ₯ κ΅¬ν˜„ 브랜치

πŸ“Œ Commit Convention

[TAG] λ©”μ‹œμ§€ => [feature/#issue_num] TAG: commit message
νƒœκ·Έ 이름 μ„€λͺ…
[CHORE] μ½”λ“œ μˆ˜μ •, λ‚΄λΆ€ 파일 μˆ˜μ •
[FEAT] μƒˆλ‘œμš΄ κΈ°λŠ₯ κ΅¬ν˜„
[ADD] FEAT μ΄μ™Έμ˜ λΆ€μˆ˜μ μΈ μ½”λ“œ μΆ”κ°€, 라이브러리 μΆ”κ°€, μƒˆλ‘œμš΄ 파일 생성
[HOTFIX] issueλ‚˜ QAμ—μ„œ κΈ‰ν•œ 버그 μˆ˜μ •μ— μ‚¬μš©
[FIX] 버그, 였λ₯˜ ν•΄κ²°
[DEL] μ“Έλͺ¨ μ—†λŠ” μ½”λ“œ μ‚­μ œ
[DOCS] READMEλ‚˜ WIKI λ“±μ˜ λ¬Έμ„œ κ°œμ •
[CORRECT] 주둜 λ¬Έλ²•μ˜ 였λ₯˜λ‚˜ νƒ€μž…μ˜ λ³€κ²½, 이름 변경에 μ‚¬μš©
[MOVE] ν”„λ‘œμ νŠΈ λ‚΄ νŒŒμΌμ΄λ‚˜ μ½”λ“œμ˜ 이동
[RENAME] 파일 이름 변경이 μžˆμ„ λ•Œ μ‚¬μš©
[IMPROVE] ν–₯상이 μžˆμ„ λ•Œ μ‚¬μš©
[REFACTOR] μ „λ©΄ μˆ˜μ •μ΄ μžˆμ„ λ•Œ μ‚¬μš©

πŸ“ Project Foldering

πŸ“ server _
|_ πŸ“ common _
|_ πŸ“ controller _
|_ πŸ“ domain _
|_ πŸ“ exception _
|_ πŸ“ infrastructure _
|_ πŸ“ service _
|_ ServerApplication

πŸ₯« ERD

image
πŸ’• 솝컀톀 우승 μ°Έ 13~ πŸ’•
image